2016-08-01 23 views
0

"field5"の中で最高の番号を持つレコードを(MySQLデータベースのテーブルから)選択したいphp pdoスクリプトがあります。私はまた、以下を参照してください、いくつかの他のくびれを持っている:PHP例外:SQLSTATE [42000]:構文エラーまたはアクセス違反:1064

$stmt=$db->query("SELECT `field1`,`field2` FROM ".$tablename." WHERE 
`field3`!=".$variable1." AND `field3`!=".$variable2." AND 
`field4`='xx' AND `field5`<".$variable3." ORDER BY DESC `field5` LIMIT 
1"); 

私はかなりのtry-文の中のすべてのコードを持っている、とcatchステートメントで、私は、例外メッセージを取得するために

var_dump($ex->getMessage()); 

を使用します例外$ exから。今

、私は次の例外メッセージを取得するコードを実行するとき:

「SQLSTATE [42000]:構文エラーまたはアクセス違反:1064あなたは、あなたのSQL構文で エラーが発生しています。近くに使用する権利構文については、あなたの MySQLサーバのバージョンに対応するマニュアルを確認してくださいライン3' 「DESC field5 LIMIT 1」(長さ= 232)

私が何上の任意のアドバイスに感謝するだろう間違っているかもしれません!

+0

あなたはすでに私は今、とても愚かな感じPDO ... – naththedeveloper

答えて

0

ORDER BY field5 DESC 
+0

を使用している場合、神ああ、プリペアドステートメントを使用してください。ありがとう! – kinzai

0

に変更

ORDER BY DESC field5 

親切に選択クエリの構文についてはMySQL manualを参照してください。あなたは簡単な間違いをしました。つまり、クエリはが構文的に間違っていたでした。

ORDER BY '{Column-Name}'

をして、あなただけが、それはASCまたはDESCのどちらかで注文することができる方法を定義することができます:あなただけの最初にそれを参照することで、列を注文することができます。

ORDER BY '{Column-Name}' [ASC|DESC]

だから、ここに示すように、クエリを変更する必要があります。

$stmt=$db->query("SELECT `field1`,`field2` FROM ".$tablename." WHERE 
`field3`!=".$variable1." AND `field3`!=".$variable2." AND 
`field4`='xx' AND `field5`<".$variable3." ORDER BY `field5` DESC 
LIMIT 1"); 
関連する問題