这太疯狂了。似乎没有错:
$q_messages = $db->query( "SELECT `messages`.`MessageID`, `messages`.`MsgDate`, `messages`.`MsgStatus`, " .
"`messages`.`Subject`, `messages`.`Message`, CONCAT(users.LastName, ', ', users.FirstName) SenderName " .
"FROM `messages` " .
"INNER JOIN `users` ON `messages`.`Sender` = `users`.`UserID` " .
"WHERE (`messages`.`Recipient`=$userid)" );
该查询导致抛出以下错误:
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 '\', \', users.FirstName) SenderName FROM `messages` INNER JOIN `users` ON `messa' at line
我也试过用concat函数替换','和\“,\”,但这也没有解决它。 顺便说一句,如果我删除concat函数的第二个参数,它就可以了
PS。我在phpmyadmin中运行了查询,它运行了!
这是回声的sql。对不起,我一开始并没有意识到你的意思:D
SELECT `messages`.`MessageID`, `messages`.`MsgDate`, `messages`.`MsgStatus`, `messages`.`Subject`, `messages`.`Message`, CONCAT(users.LastName, ', ', users.FirstName) SenderName FROM `messages` INNER JOIN `users` ON `messages`.`Sender` = `users`.`UserID` WHERE (`messages`.`Recipient`=30)
答案 0 :(得分:0)
一种可能性是$userid
的价值。例如,如果它是一个字符串,那么它应该用引号括起来。
此外,在提供此类查询时,最好显示实际发送的SQL。也就是说,在参数替换之后。
答案 1 :(得分:0)
试试这个结论:
CONCAT(users.LastName, ' , ', users.FirstName) as SenderName
我测试过并且工作正常;)
PS:尝试在var中连接查询,例如:
$query = "select * from my_table";
$q_messages = $db->query($query);
通过这种方式,您可以对$ query进行回显,看看发生了什么;)
答案 2 :(得分:0)
在评论中,您说$db
是自定义Database
对象。它的query
方法可能会转义传递给它的字符串,这会导致它转义', '
周围的引号,从而破坏了语法。