假设我们有一个带有“user”“siblings”字段的mysql表“table”,我们希望为每个用户存储这个系列信息。我可以插入一个PHP数组到一个单一的mysql记录字段?
是有可能做到这一点:
$user=35;
$sibs=array("george","christina");
mysql_query("insert into table (user,siblings) values ('$user','$sibs')");
使场“兄弟姐妹”包含数组?
假设我们有一个带有“user”“siblings”字段的mysql表“table”,我们希望为每个用户存储这个系列信息。我可以插入一个PHP数组到一个单一的mysql记录字段?
是有可能做到这一点:
$user=35;
$sibs=array("george","christina");
mysql_query("insert into table (user,siblings) values ('$user','$sibs')");
使场“兄弟姐妹”包含数组?
你想使用PHP的serialize()功能。为了扭转这个过程中,使用unserialize()
SNIPPIT从PHP.net:
<?php
// $session_data contains a multi-dimensional array with session
// information for the current user. We use serialize() to store
// it in a database at the end of the request.
$conn = odbc_connect("webdb", "php", "chicken");
$stmt = odbc_prepare($conn,
"UPDATE sessions SET data = ? WHERE id = ?");
$sqldata = array (serialize($session_data), $_SERVER['PHP_AUTH_USER']);
if (!odbc_execute($stmt, $sqldata)) {
$stmt = odbc_prepare($conn,
"INSERT INTO sessions (id, data) VALUES(?, ?)");
if (!odbc_execute($stmt, $sqldata)) {
/* Something went wrong.. */
}
}
?>
我会试试这个,我不熟悉序列化说实话 – gianniskpf 2011-04-26 13:31:48
您可以使用序列化http://ru2.php.net/manual/en/function.serialize.php
但它是非常糟糕的做法。
我通常更喜欢内爆,但在这种情况下,这比我给出的例子复杂得多,不会起作用 – gianniskpf 2011-04-26 13:27:22
你可以说为什么'serialize'是坏习惯吗? – pavium 2011-04-26 13:27:29
@pavium因为1)如果你需要存储key-val对,那么Mysql不是最好的选择2)如果将来你想要选择所有项目,谁拥有一个(或多个)属性,那么你会遇到很大的麻烦。 – Emmerman 2011-04-26 13:29:47
是的,你可以serialize()
插入它之前的数组,或implode()
它与你选择的某种分隔符为此,但我会建议你为每个用户 - >兄弟关系插入单独的行。
我曾想过内爆,我通常使用它。但实际上我在这里给出的例子比我遇到的真正问题复杂得多。不知道序列化,我会给它一个 – gianniskpf 2011-04-26 13:31:21
我相信你会得到一个更好的解决方案,比你只是发布你想解决的问题。 :) – Narf 2011-04-26 13:44:45
要建立从他refered也使用压缩以节省空间后@大卫厚德的回答(如果对你有用):
<?php
mySerialize($obj) {
return base64_encode(gzcompress(serialize($obj)));
}
myUnserialize($txt) {
return unserialize(gzuncompress(base64_decode($txt)));
}
?>
我会加上这个应该是大卫的方法做的伎俩!谢谢! – gianniskpf 2011-04-26 13:33:33
您可以使用破灭()增加值之间的分隔。例如,您可以使用管道“|”
例如
$user=35;
$sibs=array("george","christina");
$sibs1 = ''.implode('|',$sibs).'|';
mysql_query("insert into table (user,siblings) values ('$user','$sibs1')");
在提取数据库中的信息使用LIKE '%|$var|%'
在查询中extaract精确值。例如|克里斯蒂娜|
请在发帖之前进行搜索。 http://stackoverflow.com/questions/2880276/php-mysql-array-insert-array-info-into-mysql – 2011-04-26 13:26:59