在PHP中使用数组更新表字段

时间:2012-03-23 10:06:56

标签: php mysql

我想使用数组创建一个表字段。这意味着我有一个名为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值更新。这是目前面临的问题。

5 个答案:

答案 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()。