1

我已经使用存储了一个数组列表

<?php
$array = array("foo", "bar", "hello", "world");
include("mydb.php");
$array_string=mysql_escape_string(serialize($array));
mysql_query("insert into tsest (array) values('$array_string')",$con) or die("not updated");
?>

现在我想用一个新数组更新那个字段,但不要删除我以前使用过的

   <?php
$array = array("aaa");
include("mydb.php");
$array_string=mysql_escape_string(serialize($array));

$sql= 'select * from tsest where uname = "manoj" ';    
    $result = mysql_query($sql,$con);
    $row = mysql_fetch_array($result);  
$value=$row['array'];
mysql_query('UPDATE tsest SET array="'.$array_string.'"'.$value.' where uname="manoj"',$con) or die("hello");

?>

但它没有用

4

3 回答 3

2

您在存储数组之前已对其进行了序列化,但您需要先取消序列化,然后才能将其添加到其中。

$value=unserialize($row['array']);

您还需要合并数组,执行 $array_string.'"'.$value 将不起作用。

尝试这个:

$newArray = mysql_escape_string(serialize(array_merge($value, $array_string)));
mysql_query('UPDATE tsest SET array="'.$newArray.' where uname="manoj"',$con) or die("hello");
于 2013-05-10T14:03:01.740 回答
0

当你像这样保存数组时

mysql_query("insert into tsest (array) values('$array_string')",$con) or die("not updated");

然后,您不会将用户名与此数据一起保存。但是,当您尝试获取它时,您使用的是用户名

$sql= 'select * from tsest where uname = "manoj" '; 

更新也一样。因此更新不起作用,因为您的数组没有为用户名保存manoj

因此,当您保存数组时,您还必须将用户名保存在表中

于 2013-05-10T14:05:20.723 回答
0

您的更新 sql 有一些错误,并且不能简单地加入序列化值以生成新数组尝试下面的代码

   <?php

   $array = array("aaa"); include("mydb.php"); $sql= 'select * from
   tsest where uname = "manoj" ';

------------------------------------------------------------------------

   $result = mysql_query($sql,$con); $row = mysql_fetch_array($result); 
   $value=$row['array']; $new_array = array_merge($array,
   unserialize($value)); array_string =
   mysql_escape_string(serialize($new_array)); mysql_query('UPDATE tsest
   SET array="'.$array_string.'"'.' where uname="manoj"',$con) or
   die("hello");

?>
于 2013-05-10T14:09:18.047 回答