2014-10-07 212 views
-2

當我運行這個MySQL查詢時,它不返回任何結果。我相信這一定是一個語法錯誤,但我不能看到我錯了:MySQL JOIN查詢不返回任何結果

這裏是我的查詢:

$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 

我不知道如何解決這個問題或者我的代碼有什麼問題。

+1

哪來的'JOIN'語法? – ekad 2014-10-07 07:13:44

+1

您在查詢時發生錯誤。可能你需要從: 選擇...從表加入tags上的標籤.post_id = tables.post_id ... – krynio 2014-10-07 07:16:28

回答

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."'"); 
+0

感謝Jenz的幫助。我會盡快嘗試,讓你知道我如何繼續。 – Harry 2014-10-07 07:26:57

0

你想兩個表結合不連接語句, 看看這個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

+0

感謝您的錯誤報告幫助。我會運行這個,讓你知道我如何繼續。 – Harry 2014-10-07 07:29:48

0

你的SQL查詢是錯誤的閱讀了關於MySQL的JOIN語句。

在通過代碼運行查詢之前,您可以使用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);