parse_str问题

时间:2010-07-11 21:41:12

标签: php

我对列表进行排序并使用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]; 
} 
?>

2 个答案:

答案 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()来解决这个问题。