这个MySQL查询似乎不起作用

Nir*_*rav 3 php mysql mysqli

SELECT * FROM dislikes WHERE pid = $post AND uid = $userid AND like = 1;
Run Code Online (Sandbox Code Playgroud)

此查询不起作用(我不知道为什么).一旦我使用mysqli执行此查询并尝试查找num行,我得到

注意:尝试在第13行的C:\ wamp\www\include\like.php中获取非对象的属性

只是你知道,表不喜欢目前是空的,有4列:id,pid,uid等.

编辑:

echo "SELECT * FROM dislikes WHERE pid = $post AND uid = $userid AND like = 1;";
$result = $mysqli->query("SELECT * FROM dislikes WHERE pid = $post AND uid = $userid AND like = 1;");
$row_cnt = $result->num_rows;
Run Code Online (Sandbox Code Playgroud)

这是php代码.第一行的回声输出:

SELECT * FROM dislikes WHERE pid = 2 AND uid = 3 AND like = 1;
Run Code Online (Sandbox Code Playgroud)

Bil*_*win 9

LIKE是SQL中的保留字.

您必须分隔与SQL保留字冲突的列名:

SELECT * FROM dislikes WHERE pid = $post AND uid = $userid AND `like` = 1;
Run Code Online (Sandbox Code Playgroud)

但是您的错误的解释是mysqli_query()返回false而不是有效的查询结果.您需要检查函数的返回值以确保它是资源而不是false.

另请参见参考 - 此错误在PHP中意味着什么?