-4

私はそれを知っていました、この質問は繰り返しです:

 if (($_POST['os'] != "") || ($_POST['cp'] != "") || ($_POST['ser'] != "")) {

                  $var .= "left join (select bug_id,os,cp,service from category_bug_map where category_bug_map.os like '."$_POST['os']".' and category_bug_map.cp like '."$_POST['cp']".' and category_bug_map.service like '."$_POST['ser']".') as category_map on ( category_map.bug_id = bugs.bug_id)";
              }

そして、$var で、予期しない T_VARIABLE が示されています。これには何が問題なのでしょうか?

4

3 に答える 3

2

あなたの問題は、文字列を $_POST と連結しようとしている方法だと思います。代わりに、'."$_POST['os']".'「前に」を先行させる必要があります。

'".$_POST['os']."'

それの訳は 。(ドット) は連結演算子であり、文字列のセグメントの間にある必要があります。

これをコードに置き換えます。 $var .= "left join (select bug_id,os,cp,service from category_bug_map where category_bug_map.os like '".$_POST['os']."' and category_bug_map.cp like '".$_POST['cp']."' and category_bug_map.service like '."$_POST['ser']".') as category_map on ( category_map.bug_id = bugs.bug_id)";

于 2013-05-24T06:53:57.303 に答える
1

繰り返しだとわかっているのに、なぜ投稿するのですか?

$_POST の $var 行のドットは、文字列区切り文字内ではなく、外側にある必要があります。

さらに、このコードは、SQL インジェクションの問題を公開しているため、ひどいものです: http://de.wikipedia.org/wiki/SQL-Injection

于 2013-05-24T06:50:42.507 に答える
1

これらの部分:'."$_POST['cp']".'は正しくありません。次のように書き換えます。

'".$_POST['cp']."' 

詳細はこちら: http://php.net/manual/en/language.operators.string.php

于 2013-05-24T06:48:25.387 に答える