MySQL JOIN查询不返回任何结果

时间:2014-10-07 07:12:45

标签: php mysql sql

当我运行此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

我不知道如何解决这个或我的代码有什么问题。

3 个答案:

答案 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);