当我运行此MySQL查询时,它不会返回任何结果。我相信它一定是语法错误,但我看不出我错在哪里:
这是我的问题:
$table_search = mysqli_query($mysqli, "SELECT tables.* FROM tags ON tags.post_id = tables.post_id WHERE tables.post_id = ".$post['id']." AND tags.tag = ".$tag);
我知道$post['id']
和$tag
都不是问题所在,因为我检查了这些变量并且它们都返回了被驱逐的值。一旦我运行了查询,我就计划输出数据:
while($table = mysqli_fetch_array($table_search)) {
echo $table['content'];
}
当我在脚本中运行错误报告时,这是错误:
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in /Users/.../search.php on line 63
我不知道如何解决这个或我的代码有什么问题。
答案 0 :(得分:2)
JOIN
。而且,如果$tag
是一个字符串,则必须将其括在引号内。
将您的查询更正为
$table_search = mysqli_query($mysqli, "SELECT tables.* FROM tags JOIN tables ON
tags.post_id = tables.post_id WHERE tables.post_id = ".$post['id']." AND tags.tag =
'".$tag."'");
答案 1 :(得分:0)
您尝试在没有JOIN语句的情况下组合两个表, 看看这个answer
在您的代码中添加:
if (!$table_search) {
printf("Error: %s\n", mysqli_error($con));
exit();
}
这一行之后:
$table_search = mysqli_query($mysqli, "SELECT tables.* FROM tags ON tags.post_id = tables.post_id WHERE tables.post_id = ".$post['id']." AND tags.tag = ".$tag)
;
更好地了解你得到的错误。
阅读来自docs
的Mysql的JOIN语句答案 2 :(得分:0)
您的SQL查询错误。
在通过代码运行查询之前,您可以使用phpmyadmin或任何其他工具来检查您的查询。
使用
$table_search = mysqli_query($mysqli, "SELECT * FROM tags where tags.post_id = {select tables.post_id from tables WHERE tables.post_id = $post['id']} AND tags.tag = $tag);