2012-05-12 12 views
0

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

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

ここに質問があります。クエリを作成するより洗練された方法がありますか?

答えて

2

に基づいて、事実上任意のPHPフレームワークは、ORMを提供しています...などDoctrinePropelなどORMを使用し、それが(MySQLiを内に存在します良い)またはPDO(良い)。古代mysql_*機能を備えた新しいコードを書いて停止してください

:私はmysql_*を使用する人々のコメントに追加共通点を追加します。 彼らはもはや維持されておらず、コミュニティはdeprecation processで始まっています。代わりに、 PDOまたはMySQLiのいずれかを使用して、 を準備してください。あなたが ケアを学ぶ場合は、here is a quite good PDO-related tutorial

それはmysql_*機能で行うことは可能ですが、I 非常に(本当に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(); 
+0

mysqli拡張にはmysql_ *関数が含まれていますか? – Eugeny89

+0

@ Eugeny89:いいえ、プロシージャコーディングを好む人には 'mysqli_ *'関数が含まれています。私の答えに入れたリンクを読んでください。 –

1

はい、そうです。あなたは/ PDOかmysqliを使う必要があります。彼らはデータベースに整数を挿入すると、あなたは必要ないでしょう。'

1

がある - それは、プリペアドステートメントと呼ばれていますそれらのほとんどがActive Recordパターン

+0

1つの質問...なぜですか? –

1

はい、唯一のものは、あなたが値1との危険な値に対するE_NOTICEレベルのエラーが発生しますということである可能性ありaのインテリアです。

関連する問題