2015-11-01 75 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)。”'' –

相关问题