0

私はPHPfwriteを使用してHTMLとPHPをファイルに入力しています問題はこれです。$contentが何であるかを囲むために''を使用しました。HTMLとPHP、

それから私は「」を使って囲みました

 $sql="SELECT * FROM $tbl_name WHERE..... 

これは$contentにあり、

しかし今、私はこれをしたいときに立ち往生しています:

  WHERE var1="$var1" and var2="$var2"  

私はすでに''と""を使用しているので、これらのいずれかを使用した場合、明らかに機能しません。

この問題を回避するための代替方法のアイデアはありますか?'または"に類似した他の記号はありますか?

よろしくお願いしますNiall

4

10 に答える 10

5
$sql = 'SELECT * FROM ' . $tbl_name . ' WHERE var1="' . $var1 . '"';

そうは言って$var1も、整数またはその他の方法でサニタイズされていない限り、コードはSQLインジェクションに対して脆弱になります。

于 2011-04-07T20:01:43.220 に答える
4

「または」文字の前にバックスラッシュを置くことで、文字をエスケープできます。

$sql = "SELECT * FROM $tbl_name WHERE var1=\"$var1\" and var2=\"$var2\""

SQLインジェクションに対して脆弱になりたくない場合は、このクエリを実行する前に、必ず$var1と$var2でaddslashes(または同様のもの)を呼び出してください

于 2011-04-07T20:02:02.150 に答える
2

代替手段は必要ありません。

PHPコードを自分のコードと一緒にファイルに書き込まないでください。

ほら、あなたはPHPをひどく間違った方法で使っています。

新しいユーザーごとに別のPHPページを作成する代わりに、1つのPHPページだけを使用してすべてのユーザーにサービスを提供する必要があります。

このページは、いくつかのデータストレージ、データベース、またはテキストファイルを操作し、それをユーザーに表示します。

これが、すべてのPHPアプリケーションの動作方法です。単一のPHPコード、複数のデータです。

于 2011-04-07T20:25:16.477 に答える
2

あなたはこれを行うことができます:

 $sql='select * from '.$tblname.' where...
于 2011-04-07T20:01:21.910 に答える
1

バックスラッシュを使用して引用符をエスケープできます。したがって、$sql変数で使用できます

\" Escaped Double Quote.
\' Escaped Single Quote.
于 2011-04-07T20:01:57.210 に答える
1

SQLクエリ内で一重引用符を使用することもできます。

$sql = "SELECT * FROM $tbl_name WHERE var1='some string value' AND var2='$var2'";

または、文字列の連結を使用します。これは、シングルとダブルの両方で引用された文字列に対して機能します。

$sql = "SELECT * FROM $tbl_name WHERE var1='" . $var1 . "' AND var2='" . $var2 . "'";
$sql = 'SELECT * FROM ' . $tbl_name . ' WHERE var1="'. $var1 . '" AND var2="' . $var2 . '"';
于 2011-04-07T20:02:28.817 に答える
1

上記のすべての答えは正しいですが、私はよりエレガントな解決策を指摘したいと思います:

sprintf('SELECT * FROM %s WHERE var1 = "%s" AND var2 = %d', "tableName, "someString", 12);
于 2011-04-07T20:11:54.293 に答える
0

'または"の代わりに使用する必要はありません。'または"の前に\を配置すると、'または"をエスケープできます。

例えば

$sql = "SELECT * from $table_name where var1=\"$var1\" and var2=\"$var2\""

実行後、$sql内の文字列は次のようになります

SELECT * from my_table where var1="var1_value" and var2="var2_value"
于 2011-04-07T20:10:47.130 に答える
0

すでに文字列を「」で囲んでいる場合は、$var1と$var2の周りに再度追加する必要はありません。

于 2011-04-07T20:01:17.043 に答える
0

PHPマニュアルで説明されているように、ヒアドキュメント構文を使用します。

http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc

于 2011-04-07T20:01:55.693 に答える