用php附加序列化数组中的数据

时间:2012-07-13 06:22:26

标签: php

我正在编写一个用于创建序列化数组的PHP脚本,如下所示:

$x=Array();
  $x[0]=$_GET['fname'];
  $x[1]=$_GET['lname'];
  $str=serialize($x);
  print $str;
  $y=$_GET['hf'];
  $con = mysql_connect("localhost","root","");
    if (!$con)
    {
    die('Could not connect: ' . mysql_error());
    }

    mysql_select_db("formdemo", $con);
    $sql="update rohit set data='$str' where fid='$y'";

现在我想在这个数组上附加更多数据。我应该怎么做呢

感谢名单

3 个答案:

答案 0 :(得分:1)

您必须重新序列化数组添加值并再次序列化。

function add($serializedArray, $item)
{
   $array = unserialize($serializedArray);
   $array[] = $item;
   return serialize($array);
}

答案 1 :(得分:0)

首先,您不会转义传递给脚本的数据。你必须这样做:

$x[0] = mysql_real_escape_string( $_GET['fname'] );

此外,您无需设置索引,因此:

$x[] = mysql_real_escape_string( $_GET['fname'] );

它会将数据附加到数组的末尾。

如果要将新数据添加到现有序列化数组,则需要对其进行反序列化,添加数据并再次序列化:

$x   = unserialize($x);
$x[] = 'something else';
$x   = serialize($x);

答案 2 :(得分:0)

将其拉出数据库,反序列化,添加数据,序列化,然后再次更新:

$mysqli = new mysqli("localhost", "root", "", "formdemo");
$stmt = $mysqli->prepare("SELECT data FROM rohit WHERE fid = ?");
$stmt->bind_param('i', $_GET['hf']);
$stmt->execute();
$stmt->bind_result($x);
$stmt->fetch();
$stmt->close();

$x = unserialize($x['data']);
$x[] = "new data";
$x = serialize($x);

$stmt = $mysqli->prepare("update rohit set data=? where fid=?");
$stmt->bind_param('si', $x, $_GET['hf']);
$stmt->execute();