MySQL查询问题:WHERE子句

时间:2016-12-07 07:35:44

标签: php mysql

我最近从windows(movamp)切换到linux(灯),我有一个问题(语法错误)与查询,我无法弄清楚为什么。 这是我得到的查询和错误信息:

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

您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以便在第1行的'\'false \''附近使用正确的语法.SELECT * FROM产品WHERE trash ='false'

我总是使用该语法编写查询,而且我从未遇到过问题。

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

4 个答案:

答案 0 :(得分:1)

您的语法错误显示查询中不存在的一些虚假反斜杠,就好像您实际运行的一样:

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

甚至没有完整的PHP语句来检查我们只能推测,我的猜测是 - 因为你从一个非常古老的PHP版本升级 - 你可能会遇到magic quotes的一些问题。该“功能”不再存在,因此服务器中的任何内容都不能自动注入反斜杠,因此必须将您的代码设置为有意执行该代码的代码。

说,PHP / 4在2004年被PHP / 5取代(就像12年一样)并且在前往PHP / 7的过程中发生了很多变化:迁移将比仅仅删除新的代码更难服务器

答案 1 :(得分:0)

尝试删除单引号,或尝试撤消单引号和双引号。如果无效则使用带有错误值的变量。

答案 2 :(得分:0)

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

试试这个(虽然你的情况也应该有效)

如果您尝试在PHPMYadmin中运行SQL查询或者喜欢,也会尝试删除双引号。

答案 3 :(得分:0)

我想感谢大家的回答和意见。你帮助我找出了问题所在:整个查询字符串都被转义,而不仅仅是转义所需的数据。

我感到愚蠢。这很明显。

反正。非常感谢您的支持。