2011-10-18 90 views
0

我希望WHERE數據選擇$ find,但它(WHERE)在下面的查詢不起作用,我的輸出是There is not,如何解決它?不工作在哪裏在SQL INNER JOIN?

$find="hello"; 
$query = $this->db->query(' 
SELECT tour_foreign.name, 
     tour_foreign_residence.name_re, 
     tour_foreign_airline.name_airline, 
     tour_foreign.service, 
     tour_foreign.date_go, 
     tour_foreign.date_back, 
     tour_foreign.term 
FROM tour_foreign 
     INNER JOIN tour_foreign_residence 
     ON (tour_foreign.id = tour_foreign_residence.relation) 
     INNER JOIN tour_foreign_airline 
     ON (tour_foreign.id = tour_foreign_airline.relation) 
WHERE tour_foreign.name LIKE "%' . $find . '%" 
     OR tour_foreign_residence.name_re LIKE "%' . $find . '%" 


'); 

if ($query->num_rows() > 0) { 
    foreach ($query->result() as $val) { 
     echo $val->name . '<br>'; 
    } 
} else { 
    echo 'There is not'; 
} 
+3

'JOIN'應該只有1個'ON',:'JOIN ... ON(... AND ...)'。你有2個:'加入...開...並且...'。這只是一個印刷錯誤?另外,在WHERE之前有一個逗號也是語法錯誤。 – a1ex07

+0

乍一看,你的SQL語句看起來沒問題。我的建議是:迴應SQL語句,而不是'不存在'來查看是否還有其他問題(數據庫中沒有數據等)。 – Bjoern

+0

賓果。 a1ex07有問題:您的連接子句中出現語法錯誤,導致整個查詢失敗。 –

回答

2

你有WHERE(後tour_foreign_airline.relation)之前一個額外的逗號。

編輯:我看你現在修好了,但JOIN仍然看起來錯了。試試這個:

INNER JOIN tour_foreign_residence 
ON (tour_foreign.id = tour_foreign_residence.relation) 
INNER JOIN tour_foreign_airline 
ON (tour_foreign.id = tour_foreign_airline.relation) 
+0

我改變了代碼(請看我的帖子),但仍然有輸出'沒有'。我做到了這一點:'echo $ query-> num_rows();'這個回聲輸出是'0'爲什麼?這是否是因爲''id'與'relation'不相同的名字? –

+0

@NicoleSpears假設'$ this-> db'是MySQLi的一個包裝器,請在查詢後試試這個:'echo $ this-> db-> error;' – MVS

+0

我把'echo $ this-> db-> error; '但是得到這個錯誤'消息:未定義的屬性:CI_DB_mysql_driver :: $ error' –