PHP:传递mysql查询的变量而不将它们包含在“或”中

时间:2010-02-19 21:46:18

标签: php mysql

有一个开源应用程序可以执行如下查询:

$db->query('SELECT item FROM table WHERE something='.$something);

这很好用,mysql运行查询但是如果我使用完全相同的方法我得到一个错误,mysql将其视为“something =($ something of something)”并且它(正确地)抱怨($的值)某事)不是一排。这些应用程序都运行在同一台服务器上,我已经根据他们的代码进行了几个小时的工作,但我无法解决导致它的原因。

$db->query('SELECT item FROM table WHERE something='.$something);

在他们的应用程序中工作但在我的工作中失败。我需要对我正在传递的字符串做些什么吗?我没有问题正确地包含变量,例如:

$db->query('SELECT item FROM table WHERE something="'.$something.'"');

但我想知道造成这种差异的原因。

4 个答案:

答案 0 :(得分:4)

MySQL需要包含字符串。我唯一能想到的是$ something是整数或浮点数。

答案 1 :(得分:1)

您可以传递没有引号的数字

SELECT ... WHERE id=5

但你必须用引号

标记字符串文字
SELECT ... WHERE id='abc'

请参阅http://dev.mysql.com/doc/refman/5.0/en/string-syntax.html

答案 2 :(得分:0)

  1. 如果$ something来自用户/浏览器,那么代码就是糟糕的坏。那是调用sql_injection错误

  2. 向我们发送确切的代码声明和SQL日志,以便我们了解正在发生的事情

答案 3 :(得分:-1)

试试这个

$db->query('SELECT item FROM table WHERE something={$something}');

这将有效