PHP:现代版“或死();”用于错误处理

时间:2011-12-29 17:47:30

标签: php mysql oop die

当我第一次开始学习PHP时,我会编写类似于这里的查询语句:

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

达到与上述相同的效果的最佳方式是什么?

据我所知,在今天的类,函数和一般OOP的世界中,以这种方式运行一堆查询是非常低效的。我们应该做些什么?

1 个答案:

答案 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();