在php中为DataBase爆炸

时间:2011-05-03 12:10:16

标签: php

当我从selected.php?aa=2,3,

这样的网址获取值时,它无效
$mainclass  = $_GET['aa'];
$classarray = explode(",", $mainclass);
$classarray = array_walk($classarray, 'intval');
$classa     = implode(',', $classarray);

$makefeed = mysql_query("SELECT * FROM studentnew WHERE fieldname IN (".$classa.")"); while ($cc = mysql_fetch_array($makefeed))  { }

3 个答案:

答案 0 :(得分:1)

使用array_walk()时,键/索引作为第二个参数传递给回调函数(intval())。

intval()的第二个参数是基数。您不希望将数组索引作为基数传入。这将返回不正确的结果(我假设您希望它们全部为十进制)。

相反,请使用array_map()

此外,array_walk()通过引用工作并返回一个布尔值。因此,您要将此布尔值分配给$classarray变量。

答案 1 :(得分:1)

变化

$classarray = array_walk($classarray, 'intval');

array_walk($classarray, 'intval');

array_walk返回布尔值,而不是数组。 http://ru2.php.net/manual/en/function.array-walk.php

答案 2 :(得分:1)

您需要array_map

更改

$classarray = array_walk($classarray, 'intval');

$classarray = array_map('intval' ,$classarray);