QA@IT

PHPファイルを使用したクエリーの$where句で$_GETを複数使用する際の正しい記述方法をご教授頂けませんでしょうか。

1765 PV

いつもお世話になっております。

ある情報サイトの詳細ページの下位に関連情報を表示するブロックを設定いたしました。そのブロック用のphpファイル内でその関連情報を抽出するためのクエリーのwhere句は以下の様になり、機能しております。$GET['product_id'].'!= T1.product_idはそのブロックに詳細ページと同じproduct_idを持つものを表示しないという記述です。

$where = $_GET['product_id'].'!= T1.product_id and T2.delflg = 0 and T1.class IN ( ? )';

この記述にさらにあるグループと同じグループのものは表示しないという設定にしたく以下のような記述を試みましたが、その下のようなエラーメッセージがでます。

$where = $_GET['product_id'].'!= T1.product_id and $_GET['groupname']!= T1.groupname and T2.del_flg = 0 and T3.class_id IN ( ? )';

2016/03/31 11:35:48 [/products/detail.php] Fatal error(E_PARSE): syntax error, unexpected T_STRING on [/var/www/vhosts/xxxx/httpdocs/data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_Product_List.php(54)] from
customer_id =

問題であると考えられるのは$whereに$_GETを複数使用する際の’’でのくくり方にあり、2つ目の$_GETである$_GET['groupname']を’’の中に入れているから発生するエラーであると考えられますが、正しい記述方法をご教授頂けませんでしょうか。

  • 文字列結合について調べてください。(既にコードにも出てきていますし、引用符についても違いがあると前回回答しています。)
    これまでの質問を見るにもう少し基本的な勉強をしたほうが良いと思います。
    -
  • sqlインジェクション脆弱性がありますので、修正する必要があります -
ウォッチ

この質問への回答やコメントをメールでお知らせします。