使用PHP逐个在MySQL中存储数组

时间:2013-05-10 13:59:14

标签: php mysql arrays

我已经使用

存储了一个数组列表
<?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");

?>

但它没有工作

3 个答案:

答案 0 :(得分: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");

答案 1 :(得分:0)

当你像这样保存数组时

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

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

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

更新相同。因此,更新无效,因为您的数组未保存为用户名manoj

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

答案 2 :(得分: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");

?>