在哪里CURDATE()< end_date AND WHERE标题LIKE'%test%'

时间:2016-04-01 10:34:31

标签: mysql sql date

我正在建立新闻网站。

我正在尝试仅打印右侧end_date内的新闻,但有些我不能让它工作

$sql2 = "SELECT * FROM p_news WHERE CURDATE() < end_date AND WHERE title LIKE '%$search%'";

当我尝试回显sql,并在phpmyadmin中测试它

它收到此错误

  

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   靠近&#39; WHERE标题喜欢&#39;%test%&#39;限制0,30和#39;在第1行

2 个答案:

答案 0 :(得分:1)

全是documented

SELECT
    [ALL | DISTINCT | DISTINCTROW ]
      [HIGH_PRIORITY]
      [MAX_STATEMENT_TIME = N]
      [STRAIGHT_JOIN]
      [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
      [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
    select_expr [, select_expr ...]
    [FROM table_references
      [PARTITION partition_list]
    [WHERE where_condition]
    [GROUP BY {col_name | expr | position}
      [ASC | DESC], ... [WITH ROLLUP]]
    [HAVING where_condition]
    [ORDER BY {col_name | expr | position}
      [ASC | DESC], ...]
    [LIMIT {[offset,] row_count | row_count OFFSET offset}]
    [PROCEDURE procedure_name(argument_list)]
    [INTO OUTFILE 'file_name'
        [CHARACTER SET charset_name]
        export_options
      | INTO DUMPFILE 'file_name'
      | INTO var_name [, var_name]]
    [FOR UPDATE | LOCK IN SHARE MODE]]

换句话说,您可以拥有零个或一个WHERE但不能两个。

  

如果给出WHERE子句,则表示条件或条件   行必须满足才能被选中。 where_condition是一个   对于要选择的每一行,计算结果为true的表达式。该   如果没有WHERE子句,则语句选择所有行。

     

在WHERE表达式中,您可以使用任何函数和   MySQL支持的运算符,聚合(摘要)除外   功能。请参阅Section 9.5, “Expression Syntax”Chapter 12, Functions and Operators

答案 1 :(得分:0)

您只能有一个WHERE子句,其中的每个条件都需要加入AND或OR ...

SELECT * 
FROM p_news 
WHERE CURDATE() < end_date 
AND title LIKE '%$search%'

OR

SELECT * 
FROM p_news 
WHERE CURDATE() < end_date 
OR title LIKE '%$search%'