1

単純なクエリビルダーを作成していますが、2つの質問があります。

  1. それが使用して行われるのと同様のレベルに通常の機能でmysqlクエリを保護することは可能->execute(array(':param:' => ...ですか?

  2. 1つのクエリで多くの変数を使用し、それらに同じ名前(セミコロンの後の名前)を付けてから、それらを1つずつバインドすることは可能ですか?

4

1 に答える 1

2
  1. あなたの理解が正しければbindParam、標準mysql_*機能で の機能を再現できるかどうか知りたいですか?

    短い答えはノーです。mysql 関数はまったく使用しないでください。mysqliまたはPDOを使用してください。これは、prepared statements. また、SQL をデータベース用に事前に最適化できるため、クエリのパフォーマンスが大幅に向上します。

  2. 各パラメーターを個別に定義する必要があります (同じ値であっても)。メソッド呼び出しに単純な配列を渡すこともできますがexecute()、その場合、パラメーターの型を明示的に定義するオプションはありません。

関数内で次のようなものを使用します。

$name = "fred";
$statement = $pdo->prepare("SELECT id FROM contacts WHERE first_name = ? OR last_name = ?");
for ($x = 1; $x <= 2; $x++) {
  $statement->bindParam($x, $name, PDO::PARAM_STR);
}
$statement->execute();
于 2012-10-09T20:45:13.233 に答える