-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

この連結を試してください:

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

1 つの可能性は の値です$userid。たとえば、文字列の場合は引用符で囲む必要があります。

また、そのようなクエリを提供する場合は、送信される実際の SQL を表示することをお勧めします。つまり、パラメーター置換の後です。

于 2013-02-21T14:28:17.370 に答える
0

コメントで、あなたは$dbカスタムDatabaseオブジェクトだと言いました。そのqueryメソッドは、渡された文字列をエスケープしている可能性があります。これにより、 を囲む引用符がエスケープされ', '、構文が壊れます。

于 2013-02-21T14:43:20.440 に答える