我不能为我的生活弄清楚为什么我的查询返回错误。我正在用PHP生成它。为什么我的MySQL查询返回语法错误?
$column = "display_name";
$criteria = "Steven";
$query = "
SELECT
m.user_id AS id, m.email_address, m.display_name, m.status, UNIX_TIMESTAMP(m.join_date) AS join_date,
l.listing_id, COUNT(l.member_id) AS total_listings,
g.group_id AS group_id, g.title AS group_title
FROM users AS m
LEFT JOIN listings as l on m.user_id = l.member_id
LEFT JOIN groups AS g on m.group_id = g.group_id";
if($column == "display_name"){
$query .= '
WHERE m.display_name LIKE \'%'.$criteria.'\'%';
} else {
$query = "
WHERE m.".$column." = '$criteria'";
}
$query .="
GROUP BY m.user_id";
上面的代码产生以下:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '% GROUP BY m.user_id' at line 8
SELECT m.user_id AS id, m.email_address, m.display_name, m.status, UNIX_TIMESTAMP(m.join_date) AS join_date, l.listing_id, COUNT(l.member_id) AS total_listings, g.group_id AS group_id, g.title AS group_title FROM users AS m LEFT JOIN listings as l on m.user_id = l.member_id LEFT JOIN groups AS g on m.group_id = g.group_id WHERE m.display_name LIKE '%Steven'% GROUP BY m.user_id
我使用LIKE %$criteria%
和LIKE '%$criteria%'
试过,我不知道为什么没有正常工作。有任何想法吗?
'LIKE'%Steven'%'是错误的语法。试试'LIKE'%Steven%''而不是 –
'LIKE'%Steven'%'这应该是'LIKE'%Steven%'' –