【发布时间】:2016-08-16 00:34:53
【问题描述】:
我正在尝试连接两个表,并且还按我要连接的表中的一列对查询结果进行排序。一切正常,直到我添加 ORDER BY cm.num,此时我收到此错误:
Call to a member function fetch_assoc() on boolean
这是我的完整查询:
SELECT *
FROM course
JOIN cm ON (course = cm.course)
WHERE title LIKE '%$searchTerm%'
LIMIT $limit
ORDER BY cm.num
大家有什么建议吗?
编辑:
根据要求提供完整代码:
function getCourses($searchTerm) {
$mysqli = new mysqli('localhost', 'scott', 'tiger', 'courses');
if ($mysqli->connect_errno) {
header("HTTP/1.1 500 Internal Server Error");
die("Failed to connect to MySQL: {$mysqli->connect_error}");
}
$mysqli->set_charset('utf8');
$courses = [];
$limit = $searchTerm == '' ? 1000 : 10;
$res = $mysqli->query("SELECT * FROM course JOIN cm ON (course = cm.course) WHERE title LIKE '%$searchTerm%' ORDER BY cm.num LIMIT $limit");
while($row = $res->fetch_assoc()) {
$course = new Course(
$row['id'],
$row['title'],
$row['href'],
$row['level'],
$row['award'],
$row['summary'],
$row['dept'],
$row['subject'],
$row['overview'],
$row['wyl'],
$row['careers']
);
array_push($courses, $course);
}
return $courses;
}
【问题讨论】:
-
cm是你的表名吗?? -
在连接表时最好在整个查询中的每一列之前显式地写下表的名称/别名。
-
course既是表又是表中的列?大致了解您的表格的外观和名称会有所帮助。