2017-02-17 8 views
0

次のコードは、値を1に手動で設定した場合、$ depのコードで変数を使用しても結果は返されません。私は一重引用符と二重引用符を引用符では試していません。私は例の負荷かかわらず見ていると私は、私は、クエリの2行目に構文エラーがありますsqlが結果を返さない

$dep = 1; 
    if (!$names) { 
     $sql = "SELECT topic_id, topic_pid, ispublic, isactive, topic, dept_id FROM '.TOPIC_TABLE 
      . ' WHERE dept_id='$dep' ORDER BY `sort`"; 
     $res = db_query($sql); 
+1

あなたがここで失敗していないかどうか確かめてください。 –

+0

ここでエラーをチェック –

+0

これはosticketコアコードのコアの一部であり、完全にうまくいきます.dept_id = 1のときに動作するwhere節を追加するdept_idを追加していますが、上のコードのように配置 –

答えて

3

誤った引用符が使用されていることは間違いありません。それが問題を作成しますので、あなたのコードで 、あなたは、あなたが( ')単一引用符を使用している

$sql = "SELECT topic_id, topic_pid, ispublic, isactive, topic, dept_id FROM '.TOPIC_TABLE 
     . ' WHERE dept_id='$dep' ORDER BY `sort`"; 

後からの書き込みが、あなたの全体のクエリは、二重引用符( ")に囲まれている。

それは次のようになります。

$sql = "SELECT topic_id, topic_pid, ispublic, isactive, topic, dept_id FROM ".TOPIC_TABLE 
     . " WHERE dept_id='$dep' ORDER BY `sort`"; 

EDIT:あなたが真剣にPDOまたは他のSQLインジェクションの予防法を使用する必要があると指摘し忘れた、いかなる状況の下で、あなたの$ DEP変数は、公開フォームを介して送信することができれば、あなたはあなたのDBをベストCにダンプさせることで終わることができますase。

0

間違ってやっているものを見ることができない - あなたは、クエリ内の単一引用符をしたい場合は、同封する必要がありますその二重引用符内のすべて:

$sql = "SELECT topic_id, topic_pid, ispublic, isactive, topic, dept_id FROM ' .TOPIC_TABLE 
      . " WHERE dept_id='$dep' ORDER BY `sort`"; 

ところで、このようなクエリを構築し、文字列の連結を使用して、本当に悪いIDEAで、SQLインジェクション攻撃に開いたあなたの葉 - あなたが代わりに準備された文とパラメータを使用する必要があります。

+0

あなたは1行目の引用符エラーを見逃しました。FROMの後に、私の答えに二重引用符があるはずです。私はSQLインジェクションについて同意します –

+0

@MichaelDiPrisco:はい、確かに良いスポットです。 –

0

まずはFred -iiと言って、if文が正しく実行されていることを確認します。次に、dept_idが整数値の場合、scaisEdgeのように一重引用符は必要ありません。そうでなければ、SQLはうまく見えます。 dept_idが渡されているデータベースに証書レコードがあることを確認してください。

+0

コードの見直し@Michael Di Priscoは、あなたの見積もりが正しく整列していないという点で正しいです。あなたの質問にある引用符を使用すると、SQLは次のようになります。 'SELECT topic_id、topic_pid、ispublic、isactive、topic、dept_id FROM '.TOPIC_TABLE 。 'WHERE dept_id =' 1 'ORDER BYソート'。実際のテーブル名を正しく整理していない –

関連する問題