9

私は MySQLi で PHP を使用しており、次のようなクエリがある状況にあります。

SELECT $fields FROM $table WHERE $this=$that AND $this2=$that2

これまでのところ、与えられた配列をつなぎ合わせるコードをいくつか書きました。たとえば、次のようになります。

$search = array(name=michael, age=20) //turns into
SELECT $fields FROM $table WHERE name=michael AND age=20

これを行うより効率的な方法はありますか?

私は MySQL インジェクションについてかなり心配しています - これは非常に脆弱なようです。ありがとう!

4

1 に答える 1

19

奇妙なことに、あなたの質問のタイトルは基本的にそれに対する答えです。mysqli のパラメーター化されたクエリを使用して、次のようなことをしたいとします。

$db = new mysqli(<database connection info here>);
$name = "michael";
$age = 20;

$stmt = $db->prepare("SELECT $fields FROm $table WHERE name = ? AND age = ?");
$stmt->bind_param("si", $name, $age);
$stmt->execute();
$stmt->close();

詳細については、マニュアルの mysqli セクション、特にMySQLi_STMTに関連する関数を参照してください。

私は個人的に mysqli よりもPDObind_paramを使用する方が好きであることに注意してくださいbind_result 。それを使用する必要がある場合は、PDO のように動作するようにラッパーを記述します。

于 2009-04-08T02:02:25.340 に答える