PDO を初めて使用する私たちにとっては、PDO の方が安全で使いやすいことがわかりますが、頭を悩ませることができないのは、これはどのように保護されているのでしょうか?
<?php
$db = new PDO('mysql:host=localhost;dbname=testdb;charset=UTF-8', 'username', 'password');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
try {
//connect as appropriate as above
$db->query('hi'); //invalid query!
} catch(PDOException $ex) {
echo "An Error occured!"; //user friendly message
some_logging_function($ex->getMessage());
}
foreach($db->query('SELECT * FROM table') as $row) {
echo $row['field1'].' '.$row['field2']; //etc...
}
?>
念のために言っておきますが、それが何をするのかは理解していますが、入力をサニタイズするために正確に何をしているのでしょうか? リテラルを入れるだけのmysql_*
使い方を知っています。PDO はこれと同じシステムを使用していますか? そうでない場合、私たちは衛生に関して何に頼っていますか?mysql_real_escape_string
\