2009-09-03 11 views
2

mysqlデータベースに行を挿入するときには、文字列の値を引用符で囲む必要があります。PHP MySQLの自動見積もり?

フィールド名と値の配列をサードパーティ関数に渡すだけで、文字列値を引用符で囲む心配はありません。これを自動的に処理するクラスまたはライブラリがありますか?

おかげで、

答えて

7

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

新しいコードについては、mysql_またはmysqli_の代わりにPDOを使用してください。 PDO内では、準備されたステートメント(PDOStatementオブジェクト)を使用します。

準備済みの文では、引用符で囲む必要はなく、SQLインジェクションを停止します。

3

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

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

1

私がdrupalを使用しているとき、デフォルトの動作はdb_query("SELECT col FROM tab WHERE id=%d",$id)です。

これは、最初にmysql_real_escape_stringsprintfを使用した場合と似ています。そして、あなたは彼らがpreg_replace_callback()メソッドを使用することに注意し、code they showから、それを自分で実装することができ、あなたはそれをクリックすることができます。..

伝統的な方法を、あなたは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)); 
?> 
関連する問題