2015-11-01 63 views
0

我正在嘗試JOIN 3個表格並使用WHERE來搜索我的學生,並獲得研究所和部門的名稱,但部分內容錯誤我查詢加入3個表錯誤:mysqli_fetch_array()期望參數1爲mysqli_result,布爾給定

$gSearch = $_POST['search']; 
//$getSearch = $db->query("SELECT * FROM student_basic_info WHERE name LIKE '%$gSearch%' OR email LIKE '%$gSearch%' OR setNumber LIKE '%$gSearch%'"); 
$getSearch = $db->query("SELECT a.*, b.id, b.ins_name, c.id, c.sec_name, d.id, d.div_name 
FROM student_basic_info AS a 
JOIN institutes AS b ON (a.institute = b.id) 
CROSS JOIN ins_sections AS c ON (a.section = c.id) 
CROSS JOIN ins_division AS d ON (a.division = d.id) 
WHERE a.name = $gSearch OR a.email = $gSearch OR a.setNumber = $gSearch 
GROUP BY a.id 
"); 

這裏是我得到mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given

+0

你有一個錯誤的SQL語法,近** WHERE a.name = $ gSearch OR a.email = $ gSearch OR a.setNumber = $ gSearch ** –

回答

2

你缺少圍繞$ gSearch報價和$ gSearch逃逸。

$gSearch = $_POST['search']; 
$egSearch = $db->real_escape_string($gSearch); 
//$getSearch = $db->query("SELECT * FROM student_basic_info WHERE name LIKE '%$gSearch%' OR email LIKE '%$gSearch%' OR setNumber LIKE '%$gSearch%'"); 
$getSearch = $db->query("SELECT a.*, b.id, b.ins_name, c.id, c.sec_name, d.id, d.div_name 
FROM student_basic_info AS a 
JOIN institutes AS b ON (a.institute = b.id) 
CROSS JOIN ins_sections AS c ON (a.section = c.id) 
CROSS JOIN ins_division AS d ON (a.division = d.id) 
WHERE a.name = '" . $egSearch . "' OR a.email = '" . $egSearch . "' OR a.setNumber = '" . $egSearch . "' 
GROUP BY a.id 
"); 
+0

用什麼,如果我想'LIKE'%$ gSearch%''爲什麼?當我做了搜索的時候,所有的東西都出來了,但是有些結果我不確定它是否正確。 –

+0

謝謝我得到它'WHERE a.name LIKE'「。$ db-> real_escape_string($ gSearch)。」'OR a.email LIKE'「。$ db-> real_escape_string($ gSearch)。''OR a.setNumber LIKE'「。$ db-> real_escape_string($ gSearch)。」'' –

相關問題