2

私はこのコードの平和を持っています:

$result = mysql_query("SELECT * FROM T_utilisateur WHERE cin = '" . $_POST['cin'] . "', AND pwd = '" . $_POST['pwd'] . "'");

私の質問は次のとおりです。mysql_query()関数に簡単な方法で文字列を書き込む方法はありますか?

たとえば、C#では、次のようにString.Formatを使用しています:これは簡単な方法です.concatを使用するとString.Format("SELECT * FROM T_utilisateur WHERE cin = '{0}', AND pwd = '{1}'", cin, pwd);charを忘れることがあるためです'.

4

5 に答える 5

2

二重引用符を使用している場合、で始まる変数はすべて$、php によって自動的に入力されます。$_POST変数でも機能するかどうかはわかりません。

例:

$result = mysql_query("SELECT * FROM T_utilisateur WHERE cin = $cin AND pwd = $pwd");
于 2013-04-21T16:18:50.613 に答える
1

ユーザーが指定した値を SQL クエリで使用した瞬間に、SQL インジェクションにさらされます。したがって、ユーザー提供のデータは慎重に適切に処理する必要があります。あなたの状況では、PHP の PDO for Database Access を使用するのが最善です。これはあなたの質問にも答えます。

このトピックに関するいくつかの優れた記事を次に示します。

mysql_real_escape_string の使用は推奨されないことに注意してください。

PHPドキュメントから:

この拡張機能は の時点で廃止さPHP 5.5.0れており、将来的に削除される予定です。代わりに、MySQLiまたはPDO_MySQL拡張子を使用する必要があります。詳細については、こちらも参照MySQL: choosing an API guide and related FAQしてください。この機能の代替手段は次のとおりです。

于 2013-04-21T16:23:05.287 に答える
0

PHP にはsprintf()関数がありますが、クエリには準備済みステートメントを使用する必要があります

$result = mysql_query(sprintf(
  "SELECT * FROM `T_utilisateur` WHERE `cin`='%s' AND `pwd`='%s'", 
  $_POST['cin'], $_POST['pwd']
));
于 2013-04-21T16:22:47.133 に答える
0

安全でない方法で実行したい場合は、sprintf()と言います。しかし、正直なところ、hek2mgl が示唆したように、準備済みステートメントを使用してください

于 2013-04-21T16:23:31.060 に答える