2

mysqlデータベースに行を挿入する場合、整数が不要な場合は文字列値を引用符で囲む必要があります。

Is there any class or library that takes care of this automatically so that I can just pass to a 3rd-party function an array of fieldnames and values and don't have to worry about putting string values in quotes?

Thanks,

4

3 に答える 3

7

あなたはただ引用する以上のことを心配する必要があります。SQLインジェクションについて心配する必要があります。

新しいコードの場合は、 or関数の代わりにPDOを使用してください。PDO内で、プリペアドステートメント(オブジェクト)を使用します。mysql_mysqli_PDOStatement

プリペアドステートメントを使用すると、物事を引用符で囲む必要がなくなり、SQLインジェクションが停止します。

于 2009-09-03T22:55:42.543 に答える
3

PDOを使用する場合は、そのようなことを心配する必要はありません。

いくつかの例については、 PDO::prepareをご覧ください。

于 2009-09-03T22:54:55.103 に答える
1

drupalを使用している場合、デフォルトの動作でそれがdb_query("SELECT col FROM tab WHERE id=%d",$id)処理されます。

これは、最初にクエリsprintfでwithを使用するのと似ています。mysql_real_escape_stringそして、あなたはそれを自分で実装することができます、彼らが示すコードから、彼らがメソッドを使用していることに注意してください、そしてあなたはそれpreg_replace_callback()をクリックすることができます。

PDOを無視する場合の従来の方法(非推奨):

<?php
// Connect
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
    OR die(mysql_error());

// Query
$query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
            mysql_real_escape_string($user),
            mysql_real_escape_string($password));
?>
于 2009-09-03T22:55:18.207 に答える