没有 好的 方法可以将数组存储到单个字段中。
您需要检查您的关系数据并对模式进行适当的更改。请参阅下面的示例以获取对此方法的参考。
如果 必须 将数组保存到单个字段中,则serialize()
andunserialize()
函数可以解决问题。但是您不能对实际内容执行查询。
作为序列化功能的替代方法,还有 json_encode()
和json_decode()
。
考虑以下数组
$a = array(
1 => array(
'a' => 1,
'b' => 2,
'c' => 3
),
2 => array(
'a' => 1,
'b' => 2,
'c' => 3
),
);
$c = MysqL_connect($server, $username, $password);
MysqL_select_db('test');
$r = MysqL_query(
'DROP TABLE IF EXISTS test');
$r = MysqL_query(
'CREATE TABLE test (
id INTEGER UNSIGNED NOT NULL,
a INTEGER UNSIGNED NOT NULL,
b INTEGER UNSIGNED NOT NULL,
c INTEGER UNSIGNED NOT NULL,
PRIMARY KEY (id)
)');
要使用记录,您可以执行诸如此类的查询(是的,请注意,请注意!)
function gettest() {
$ret = array();
$c = connect();
$query = 'SELECT * FROM test';
$r = MysqL_query($query,$c);
while ($o = MysqL_fetch_array($r,MysqL_ASSOC)) {
$ret[array_shift($o)] = $o;
}
MysqL_close($c);
return $ret;
}
function putTest($t) {
$c = connect();
foreach ($t as $k => $v) {
$query = "INSERT INTO test (id,".
implode(',',array_keys($v)).
") VALUES ($k,".
implode(',',$v).
")";
$r = MysqL_query($query,$c);
}
MysqL_close($c);
}
putTest($a);
$b = gettest();
function connect() {
$c = MysqL_connect($server, $username, $password);
MysqL_select_db('test');
return $c;
}