2016-12-07 219 views
2

我最近从Windows(movamp)切换到linux(灯),并且我有一个问题(语法错误)与查询,我不明白为什么。 下面是查询和错误味精,我得到:MySQL的查询问题:WHERE子句

"SELECT * FROM products WHERE trash='false'" 

您的SQL语法错误;检查对应于你的MySQL服务器版本“在行1选择* FROM产品WHERE垃圾=”使用近“\”假\“假”

我总是写我的查询与语法正确的语法手册,我从来没有遇到过问题。

我曾经在windows上运行我的代码(php 4.1.22 mysql 5.2.11)并使用了mysql_query()函数,代码工作得很好。 现在我使用(php 7.0.8 - mysql 5.7.16)并使用mysqli_query()函数来执行查询

+0

使用'mysqli_escape_string'因为分配它们 – Beginner

+0

你试过没有单引号吗?这似乎是你试图逃避单引号,这是造成问题 –

+1

http://stackoverflow.com/questions/9596652/how-to-escape-apostrophe-in-mysql –

回答

1

你的语法错误,显示了一些虚假的反斜杠是不存在的查询,就好像你实际上是运行以下命令:

SELECT * FROM products WHERE trash=\'false\' 

由于没有连一个完整的PHP语句来检查我们只能推测,和我猜测是 - 因为你是从一个非常古老的PHP版本升级 - 你可能会遇到一些问题magic quotes。这个“功能”不再存在,所以服务器中没有任何东西可以自动注入反斜杠,所以它必须是你的代码,它是故意执行它的代码。据说PHP/4在2004年被PHP/5所取代(这就像12年),并且在去PHP/7的路上发生了很多变化:迁移将比仅仅将代码放入新的服务器。

0

尝试删除单引号,或尝试反转单引号和双引号。如果没有任何工作使用具有错误值的变量。

0
"SELECT * FROM `products` WHERE `trash` ='false'" 

试试这个(虽然你的情况应该也可以)

也尽量去除双引号,如果你试图在phpMyAdmin运行SQL查询或喜欢。

0

我想感谢大家的回答和您的意见。你帮我弄清楚问题是什么:整个查询字符串正在被转义,而不是只有逃脱所需的数据。

我觉得哑巴。这很明显。

无论如何。谢谢你的贡献。