在ENUM类型的SQL语句中使用WHERE会破坏mysql_query


Using WHERE in SQL statement on ENUM type breaks mysql_query

代码:

        $query = "SELECT * FROM tweets WHERE read=n";
        $result = mysqli_query($mysqli,$query);
        $row = mysqli_fetch_array($result, MYSQLI_ASSOC);
        echo $row["from_user"], $row["text"];

上面的代码给了我这个:

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in /index.php on line 16 

以下代码没有:

        $query = "SELECT * FROM tweets";
        $result = mysqli_query($mysqli,$query);
        $row = mysqli_fetch_array($result, MYSQLI_ASSOC);
        echo $row["from_user"], $row["text"];

"read"字段为ENUM('y','n')。

read是MySQL中的一个保留关键字。由于它是列的名称,所以在WHERE子句中添加单词周围的反勾号,这应该可以解决问题:

SELECT * FROM tweets WHERE `read` = 'n';

您需要引用ENUM值,以及转义read,这是MySQL中的保留字:

$query = "SELECT * FROM tweets WHERE `read` = 'n'";