0

値を使用して db 行のテーブルに挿入する必要があるとします$a, $b, $c。値は安全ではない可能性があり、テーブルの名前は操作を実行するクラスに定数として格納されます。次のようにクエリを作成することができます

$query = "INSERT INTO `" . self::TABLE . '` ' .
    "(a, b, c) VALUES (" .
    . intval(a) .
    ",'" . mysql_real_escape_string(b) . "'" .
    ",'" . mysql_real_escape_string(b) . "')";

ここに質問があります: クエリを作成するよりエレガントな方法はありますか?

4

4 に答える 4

2

これはプリペアド ステートメントと呼ばれ、MySQLi (良い) または PDO (良い) に存在します。を使用する人のために、コメントに追加する一般的なことを追加しますmysql_*

古いmysql_*関数で新しいコードを書くのはやめてください。それらはもはや保守されておらず、コミュニティは非推奨プロセスを開始しています。代わりに、準備済みステートメントについて学び、 PDOまたはMySQLiのいずれかを使用する必要があります。学習したい場合は、ここに PDO 関連の非常に優れたチュートリアルがあります。

mysql_*関数内で行うことは可能ですが、私は強く(本当にEPICLY ) 反対することをお勧めします。


PDO では、コードは次のようになります。

$query = "INSERT INTO `" . self::TABLE . "` (a, b, c) VALUES (:a, :b, :c);";

$statement = $db_connection->prepare($query);

$statement->bindParam(":a", $a);
$statement->bindParam(":b", $b);
$statement->bindParam(":c", $c);

$statement->execute();
于 2012-05-12T12:30:58.943 に答える
1

はい、そうです。PDOまたはmysqliを使用できます/使用する必要があります。ちなみに、データベースに整数を挿入するときは必要ありません'

于 2012-05-12T12:29:35.303 に答える
1

あります - DoctrinePropelなどのORMを使用します ... 実質的にすべての PHP フレームワークが ORM を提供し、それらのほとんどはActive Recordパターンに基づいています

于 2012-05-12T12:30:11.720 に答える
1

はい、可能です。唯一のことは、intvalのaの安全でない値に対して値 1 と E_NOTICE レベルのエラーが発生することです。

于 2012-05-12T12:31:16.643 に答える