我想用array.That更新表字段,这意味着我有一个名为test.In的表,这个表我先插入了一些行。
经过一些处理后,我想用ana数组value.When更新这个表中的一个字段,然后将行插入到这个表中,此时这个字段被设置为0。
经过一些处理后,一些值返回给变量$var,如下所示:
Array
(
[id] => "http://www.google.com/calendar/"
[etag] => "GEwNTgxHfip7JGA6WhJV"
[link] => "http://www.google.com/calendar/"
)这是iam用来更新字段的代码:
$idg= json_encode($var);
mysql_query("UPDATE `test` SET `tk` = '$idg' WHERE `TID` =10");{"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更新,value.This是现在面临的问题。
发布于 2012-03-23 18:14:23
由于您的表列只能包含标量值,因此您必须将数组转换为某种字符串表示形式,例如通过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";发布于 2012-03-23 18:21:37
使用json_encode()将数组转换为字符串表示形式,然后可以轻松地将获得的字符串存储在DB表字段中
发布于 2012-03-23 18:23:37
要将整个数组存储在数据库中,请通过serialize()将其转换为字符串,并在检索时将其转换为unserialize()。
https://stackoverflow.com/questions/9837298
复制相似问题