我对列表进行排序并使用ajax更新数据库。我需要帮助解析字符串,这是我需要解析的查询字符串:
images_list[]=32&images_list[]=95&images_list[]=97&images_list[]=96&images_list[]=102&images_list[]=103&images_list[]=99&images_list[]=101&images_list[]=98&john=hi
我已经输入john = hi来查看字符串是否实际上是通过ajax发送到processor.php文件。我能够从url获取变量john = hi,因此查询字符串发送完全正常。到目前为止,这是我的代码,但我似乎无法访问我需要的数据,看起来好像什么都没有:
<?php
//Connect to DB
require_once('connect.php');
parse_str($_GET['images_list']);
for ($i = 0; $i < count($images_list); $i++) {
$id = $images_list[$i];
mysql_query("UPDATE images SET ranking = '$i' WHERE id = '$id'");
echo $images_list[$i];
}
?>
答案 0 :(得分:1)
$_GET['images_list']
是一个整数数组。那里没有什么要解析的,PHP已经可以使用了。因此,请跳过parse_str
部分,轻松使用$_GET['images_list']
代替$images_list
。
整个代码:
<?php
//Connect to DB
require_once('connect.php');
foreach ($_GET['images_list'] as $i => $id) {
mysql_query("UPDATE images SET ranking = ".mysql_real_escape_string($i)." WHERE id = ".mysql_real_escape_string($id));
echo $id;
}
?>
答案 1 :(得分:0)
您为什么使用parse_str()
? $_GET['images_list']
应该包含一个不是字符串的数组。
您的代码应为:
<?php
//Connect to DB
require_once('connect.php');
for ($_GET['images_list'] as $i=>$id) {
mysql_query("UPDATE images SET ranking = '".mysql_real_escape_string($i)."' WHERE id = '".mysql_real_escape_string($id)."'");
echo $id;
}
?>
还要注意 SQL注入!我已经使用mysql_escape_string()
来解决这个问题。