我想使用数组创建一个表字段。这意味着我有一个名为test
的表。在该表中我首先插入了一些行。
在某些过程之后,我想用一个数组值更新此表中的字段。当我在此表中插入行时,此字段设置为0
。
在某些过程之后,一些值返回到变量$var
,如:
Array
(
[id] => "http://www.google.com/calendar/"
[etag] => "GEwNTgxHfip7JGA6WhJV"
[link] => "http://www.google.com/calendar/"
)
这是用于更新字段的代码:
$idg= json_encode($var);
mysql_query("UPDATE `test` SET `tk` = '$idg' WHERE `TID` =10");
以上代码是经过编辑的代码。$idg
现在有:
{"id":"http:\/\/www.google.com\/calendar\/feeds\/testid%40gmail.com\/events\/64h9vc0qqqtlqeqhudhhdqbsds","etag":"\"GEwCQwxGeSp7JGA6WhJV\"\r","link":"http:\/\/www.google.com\/calendar\/feeds\/testid%40gmail.com\/private\/full\/64h9vc0qqqtlqeqhudhhdqbsds\r"}
在此代码被删除后,该字段将以null
值更新。这是目前面临的问题。
答案 0 :(得分:1)
由于您的表列只能包含标量值,因此您必须将数组转换为某些字符串表示形式,例如通过json_encode()。
再次从表中获取值时,必须将其转换回来,在本例中为json_decode()。
编辑:或使用可处理此类数据的存储机制/数据库,例如:基于文档的数据库,如mongodb。
edit2:添加参数编码,错误处理和调试代码
<?php
echo "start\n";
$tid = 10;
$idg = json_encode($var);
$idg_sql = mysql_real_escape_string($idg);
$query = "
UPDATE
`test`
SET
`tk` = '$idg_sql'
WHERE
`TID` = $tid
";
$result = mysql_query($query);
if ( !$result ) {
die(mysql_error());
}
if ( 1 < mysql_affected_rows() ) {
// debugging
echo "no affected rows\n";
$result = mysql_query("SELECT Count(*) as c FROM `test` WHERE `TID`=$tid") or die(mysql_error());
while( false!==($row=mysql_fetch_assoc($result)) ) {
var_dump($row);
}
}
echo "done.\n";
答案 1 :(得分:0)
使用json_encode()
将数组转换为字符串表示形式,然后可以将获得的字符串轻松存储在数据库表字段中
答案 2 :(得分:0)
要将整个数组存储在数据库中,请按serialize()将其转换为字符串 并且重新发现它unserialize()。
答案 3 :(得分:0)
将数组转换为字符串值,然后插入查询。 例如:
<?php
$var = Array('id' => "http://www.google.com/calendar/",'etag' => "GEwNTgxHfip7JGA6WhJV",'link' => "http://www.google.com/calendar/");
foreach($var as $var1){
$string .= $var1.",";
}
$var = substr($string,0,-1);
echo "UPDATE `test` SET `gk` = '$var' WHERE `TID` =77"; //printing query to check the values
?>
答案 4 :(得分:0)
您需要将数据存储在字符串中。 你可以使用php的serialize()函数,或者在需要时使用json_encode()和json_decode()。