-1

这简直是​​疯了。似乎没有什么问题:

$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)
4

3 回答 3

0

一种可能性是 的值$userid。例如,如果它是一个字符串,那么它应该用引号括起来。

此外,在提供此类查询时,最好显示正在发送的实际 SQL。也就是说,在参数替换之后。

于 2013-02-21T14:28:17.370 回答
0

试试这个连接:

CONCAT(users.LastName, ' , ', users.FirstName) as SenderName

我对其进行了测试并且工作正常;)

PS:尝试将您的查询连接到一个变量中,例如:

$query = "select * from my_table";
$q_messages = $db->query($query);

通过这种方式,您可以对 $query 进行回显并查看发生了什么;)

于 2013-02-21T14:34:08.853 回答
0

在评论中,您说$db是自定义Database对象。它的query方法可能是转义传递给它的字符串,这将导致它转义 周围的引号', ',从而破坏语法。

于 2013-02-21T14:43:20.440 回答