MySQLI查询语法错误

时间:2014-01-07 15:02:30

标签: php mysql sql mysqli

我正在尝试执行以下查询:

SELECT * FROM table_name_here WHERE Date LIKE %Jan % 2014%

现在,表名不同并隐藏在这里,但它不会通过。它说我的语法在%Jan % 2014%

周围出错

我可以让它工作,所以我知道连接有效:SELECT * FROM table_name_here 问题在于WHERELIKE部分。

我还尝试在我的托管网站数据库管理工具上执行此操作:

SELECT * 
FROM  `table_name` 
WHERE  `Date` LIKE  '%Jan % 2014%'

那一个有用,所以我真的很无能:)

那么,有什么想法吗? :)感谢提前

4 个答案:

答案 0 :(得分:2)

你有两个语法错误,首先单词Date是一个关键字,所以需要包装,你需要在字符串周围引用,如下所示:

SELECT * FROM table_name_here WHERE `Date` LIKE "%Jan % 2014%"

答案 1 :(得分:1)

假设date开始存储为日期/日期时间列,请不要在其上使用likelike使用某种本地格式隐式将其转换为字符串。

相反,要明确:

where month(`date`) = 1 and year(`date`) = 2014

where date_format(`date`, '%Y-%m') = '2014-01'

至于您的原始问题,您发现引号在字符串常量周围很重要。我建议使用单引号(而不是双引号),因为单引号是ANSI标准字符串分隔符。

答案 2 :(得分:0)

您的LIKE匹配项需要引号:

SELECT * FROM table_name_here WHERE Date LIKE "%Jan % 2014%"

答案 3 :(得分:0)

如果您使用的是DATE数据类型,则可以使用此

SELECT * FROM table_name_here WHERE 'Date' LIKE '2014-01-%'

这是mysql如何存储DATE值:'YYYY-MM-DD'例如。 “2014年1月7日。

MySQL Manual