1

ここでの私のクエリの何が問題になっていますか?

mysql_query("SELECT * FROM admin_nav1 WHERE Active = 'YES' AND WHERE LinkedID = '$WID' ORDER by 'OrderSet' ASC") or die(mysql_error());

私はこのエラーを受け取り続けます:

SQL構文にエラーがあります。1行目の「WHERELinkedID='6」ORDERby' OrderSet'ASC'の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。

4

2 に答える 2

5

WHERE句は1つだけにする必要があります。AND演算子は、2つの条件を分離するのに十分です。

SELECT  * 
FROM    admin_nav1 
WHERE   Active = 'YES' AND LinkedID = '$WID'  // <<== one WHERE clause
ORDER   by OrderSet ASC

もう1つ、列名を一重引用符で囲んで文字列に変換しているため、クエリORDERで行が正しく表示されません。OrderSet列名が予約キーワードであるかどうかが気になる場合は、バックティックでラップするか、テーブルにエイリアスを指定し、そのエイリアスで列名を使用して列を区切りますが、一重引用符は使用できません

SQL Injection補足として、変数の値(s)が外部からのものである場合、クエリは脆弱です。それを防ぐ方法については、以下の記事をご覧ください。を使用PreparedStatementsすると、値を一重引用符で囲む必要がなくなります。

于 2013-03-09T14:20:30.580 に答える
0

あなたは一度どこで使用する必要があります

SELECT * FROM admin_nav1 
WHERE Active = 'YES' AND  .....

次に、and演算子を使用してさらに条件を設定します。

于 2013-03-09T14:21:26.897 に答える