0

変数で引用符を使用する SQL クエリに問題があります。(一般的には「バインド」を使用するため、この種の問題はありません)。クエリは次のとおりです。

$myquery = mysql_query("SELECT * FROM mytable ORDER BY id ASC WHERE var='".$var."'");

構文が正しくないようです。誰か助けてもらえますか?

4

3 に答える 3

2

あなたはこのようなことを試すことができます:

$query = sprintf("SELECT * FROM mytable WHERE var='%s' ORDER BY id ASC",mysql_real_escape_string($var));
$result = mysql_query($query) or die("Error:" . mysql_error());

また、ORDER BY が間違った場所にあることに注意してください。より読みやすく、単一のクォートの連結に煩わされる必要はありません。また、mysql インジェクションに対しても安全です。お役に立てれば!

于 2012-10-24T10:19:28.070 に答える
1

一般に、DBD (Perl 用データベース ドライバー) または他の言語とドライバーの組み合わせによって提供されるパラメーター バインド機能を使用する必要があります。PHP を使用しているようです (あいまいさを取り除くために、それに応じて質問にタグを付ける必要があります。

これは、PHP で SQL パラメータをバインドする方法(PDO を使用)に関する StackOverflow スレッドです。他の言語の同様の機能と比較して、PHP PDO::bindParam メソッドには制限があることに注意してください。そのため、注意事項についてはリンクされたスレッドをお読みください。

Perl のステートメントへのパラメーターのバインドに関する別の説明を次に示します (ただし、概念的には、他のプログラミング言語とその SQL ライブラリ/ドライバーに適用できます)。

于 2012-10-24T10:36:52.983 に答える
-1

次のように使用できます

$myquery = mysql_query("SELECT * FROM mytable ORDER BY id ASC WHERE var='$var'");
于 2012-10-24T10:20:50.027 に答える