0

次のように、シリアル化された配列を作成するための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'";

ここで、この配列にさらにデータを追加したいと思います。そのために私は何をすべきか

ありがとう

4

3 に答える 3

1

シリアル化されていない配列に値を追加して、再度シリアル化する必要があります。

function add($serializedArray, $item)
{
   $array = unserialize($serializedArray);
   $array[] = $item;
   return serialize($array);
}
于 2012-07-13T06:25:43.067 に答える
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);
于 2012-07-13T06:28:16.553 に答える
0

DB から取り出し、シリアル化を解除し、データを追加し、シリアル化してから、再度更新します。

$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();
于 2012-07-13T06:31:08.547 に答える