2011-12-29 9 views
14

をエラー処理のために:PHP:現代版の "or die();"私が最初にPHPを学び始めたとき、私はここ1に類似したクエリ文を記述します

mysql_query("SELECT * FROM `table`") or die(mysql_error()); 

上記と同様の効果を達成するために、最高の現代の方法は何ですか?

私の理解では、今日のクラス、関数、一般的なOOPの世界では、このような方法でたくさんのクエリを実行することは非常に非効率的です。私たちはどうしたら違うのでしょうか?

+0

ええと、あなたは "死ぬ"とは何か違うことを望んでいるのですか?前者の場合は、タイトルを変更してください!後者の場合は、mysqliのように「低」なものから始めたり、DoctrineやPropelのような完全なORMに行きPDOを使うことができます –

+0

PDOを使います。これはオブジェクト指向であり、エラー処理の例外をスローするように構成することができます(実際にはデフォルトで行われます) –

+0

例外? –

答えて

19

例外が発生する可能性のあるPDOを使用する必要があります。キャッチされない場合、die()と同じスクリプトを強制終了します。

$db = new \PDO(
    'mysql:dbname=database;host=localhost', 
    'root', 
    '', 
    array(
     \PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8', 
     \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC, 
     \PDO::ATTR_ERRMODE   => \PDO::ERRMODE_EXCEPTION 
    ) 
); 

$db->query('SELECT INVALID FOO'); // Exception!!! 

this_never_gets_run(); 
+3

+1のPDOに対応した質問だったと思いました。とにかくPDOはずっと安全で便利です。 – Cyclone

+2

@Cyclone PDOは本質的に安全ではありません。準備済みのステートメントを使用していない場合は、PDOに切り替えることで何も得られません。 PDOでは安全ではありません。それでもあなたの質問をどのように工夫するかによって異なります。 – Gordon

+0

@Gordon、あなたはどちらかであなたのアプリを傷つけることができますが - 私はあなたが自分自身を傷つける方法が増えていると思うし、PDOを使わないことで自分を傷つけるのは簡単です。 – Xeoncross

関連する問題