2つの表を結合しようとしていますが、結合する表内の列の1つでも照会結果を順序付けしようとしています。私はこのエラーを取得した時点でORDER BY cm.num
を追加するまですべてが素晴らしい作品:ここ結合表のORDER BY
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
誰もが何か提案がありますか?
EDIT:
全コード要求通り:
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'はあなたのテーブル名ですか? – Saty
を使用すると、クエリ全体の各列の前にテーブルの名前/エイリアスを明示的に記述する方がよい場合があります。 – mitkosoft
は、そのコースのテーブルとそのテーブルの両方の列です。あなたのテーブルがどのように見えるか、名前が付けられているかという一般的な考え方が役立ちます。 – apokryfos