查询不起作用

时间:2010-06-26 16:02:02

标签: php mysql post arrays

尝试此查询时收到以下错误消息:

$query .= "($tid, {$_POST['type']['$i']}, 'Y', NOW())";

您的SQL语法有错误。查看与您的MySQL服务器版本对应的手册,以便在

附近使用正确的语法
(18, , 'Y', NOW())' at line 1

除了这一行,我的代码中的所有内容都有效。我知道它与$ _POST数组变量有关,但我不知道正确的语法。

如果您需要更多代码,我很乐意将其包含在内。

3 个答案:

答案 0 :(得分:3)

您在$i周围使用单引号是错误的:

$query .= "($tid, {$_POST['type']['$i']}, 'Y', NOW())";

这将导致$ i被字面而不是 $ i 的值(这是我认为你需要的)。

这应该有效:

$query .= "($tid, {$_POST['type'][$i]}, 'Y', NOW())";

答案 1 :(得分:2)

如果你想要更好,请帮助,显示发送post变量的代码(可能是表单或AJAX请求)。

但你的问题可能在于:

$query .= "($tid, {$_POST['type']['$i']}, 'Y', NOW())";

该帖子会评估为$_POST['type']['1']。您可能需要$_POST['type'][1]

所以试试这个:

$query .= "($tid, {$_POST['type'][$i]}, 'Y', NOW())";

答案 2 :(得分:0)

如上所述。

$query .= "($tid, {$_POST['type']['$i']}, 'Y', NOW())";

应该阅读

$query .= "($tid, {$_POST['type'][$i]}, 'Y', NOW())";

很好奇你为什么要使用“{}”。

也就是说,您应该始终避免将$ _GET或$ _POST中的变量直接输入到用于查询或网站任何其他方面的代码中。

你真的应该养成习惯,或者通过预先确定的东西传递变量。

更不用说,在运行sql查询之前,您是否会转义这些变量。

看看

http://php.net/mysql_real_escape_string http://php.net/pdo.quote

如果你有时间,请调查pdo。