【发布时间】:2016-07-03 22:38:43
【问题描述】:
在这个程序中,我试图从 MySQL 表中取出一个序列化数组,然后向其中添加一个结果,然后重新序列化该数组并将其放回表中。这是我的代码:
for($i = 0; $i < $count; $i++){
$query = "SELECT `assignment_assigned` FROM `users` WHERE isAdmin = 0 LIMIT 1";
$result = mysqli_query($con, $query);
if($result === FALSE) {
echo "Failed".mysql_error();
} else {
$unserializedVal = unserialize(implode(mysqli_fetch_array($result)));
$array = array_push($unserializedVal, $val);
$serializedVal = serialize($unserializedVal);
}
<h1><?php print_r($unserializedVal); ?></h1>
当我这样做时,我检索了数组并且可以很好地反序列化它,但是当我尝试重新序列化它时,就会出现:
a:8:{i:0;i:2;i:1;i:3;i:2;i:4;i:3;i:5;i:4;i:6;i:5;i:7;i:6;i:8;i:7;s:2:"10";}
原来的序列化字符串是这样的:
a:7:{i:0;i:2;i:1;i:3;i:2;i:4;i:3;i:5;i:4;i:6;i:5;i:7;i:6;i:8;}
我添加最后一个数字之前的数组如下所示:
Array ( [0] => 2 [1] => 3 [2] => 4 [3] => 5 [4] => 6 [5] => 7 [6] => 8 )
加上最后一个数字后:
Array ( [0] => 2 [1] => 3 [2] => 4 [3] => 5 [4] => 6 [5] => 7 [6] => 8 [7] => 10 )
这里有什么帮助吗?
【问题讨论】:
-
快速提示:由于您总是运行相同的查询(不是动态的),只需将结果保存在
for之前的变量中。这样你就不会运行多个选择,据说每次都返回相同的结果...... -
我刚刚意识到,您正在运行
mysqli_*函数,但是在显示错误时,您使用mysql_error。注意你can't mix APIs
标签: php mysql arrays serialization