有一个开源应用程序可以执行如下查询:
$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.'"');
但我想知道造成这种差异的原因。
答案 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)
如果$ something来自用户/浏览器,那么代码就是糟糕的坏。那是调用sql_injection错误
向我们发送确切的代码声明和SQL日志,以便我们了解正在发生的事情
答案 3 :(得分:-1)
试试这个
$db->query('SELECT item FROM table WHERE something={$something}');
这将有效