我'SELECT'怎么了?

时间:2015-01-30 10:51:33

标签: php mysql

我对这个SELECT感到很疯狂。 怎么了?

错误代码

  

无法运行查询:SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中出错;检查与MariaDB服务器版本对应的手册,以便在第2行的“in”附近使用正确的语法

PHP

$status = 'in';
  //Prepare query
  $query = "SELECT * FROM usr_time_reg
  WHERE usr_stamp_status = $status";

3 个答案:

答案 0 :(得分:3)

在字符串周围使用引号。

SELECT * FROM usr_time_reg
WHERE usr_stamp_status = '$status'
                         ^-------^-------here

否则,DB认为您的意思是列名而不是值。

或者甚至更好地使用 Prepared Statements 让框架为您处理所有这些并阻止SQL注入。

答案 1 :(得分:0)

$query = sprinf("SELECT * FROM usr_time_reg
    WHERE usr_stamp_status = '%s'",$status);

答案 2 :(得分:0)

您的代码将生成查询

SELECT * FROM usr_time_reg
  WHERE usr_stamp_status = in

因此,您的数据库很困惑,您正在比较没有引号的字符串值(您的情况只有在列类型为int时才有效),这对于字符串比较是必要的。

解决方案1 ​​

 $query = "SELECT * FROM usr_time_reg
  WHERE usr_stamp_status =".$status;

解决方案2

$query = "SELECT * FROM usr_time_reg
      WHERE usr_stamp_status = '$status' ";