PHP:现代版的;或者死()&引用;用于错误处理

PHP:现代版的;或者死()&引用;用于错误处理,php,mysql,oop,die,Php,Mysql,Oop,Die,当我第一次开始学习PHP时,我会编写与此处类似的查询语句: mysql_query("SELECT * FROM `table`") or die(mysql_error()); 现在,达到上述效果的最佳方式是什么 据我所知,在当今有类、函数和通用OOP的世界中,以这种方式运行大量查询是非常低效的。我们应该采取什么不同的做法?您应该使用PDO,它将抛出可以捕获的异常,或者如果没有捕获,它们将与die()一样终止脚本 嗯,你想要和“或死”不同的东西还是完全使用OOP?如果是前者,请更改标题!如果

当我第一次开始学习PHP时,我会编写与此处类似的查询语句:

mysql_query("SELECT * FROM `table`") or die(mysql_error());
现在,达到上述效果的最佳方式是什么


据我所知,在当今有类、函数和通用OOP的世界中,以这种方式运行大量查询是非常低效的。我们应该采取什么不同的做法?

您应该使用PDO,它将抛出可以捕获的异常,或者如果没有捕获,它们将与die()一样终止脚本


嗯,你想要和“或死”不同的东西还是完全使用OOP?如果是前者,请更改标题!如果是后者,您可以从像mysqli这样的“低级”开始,或者转到一个完整的ORM式的原则,并推动通过PDO来研究使用PDO。它是面向对象的,可以配置为抛出异常进行错误处理(实际上默认情况下是这样的)。每当我看到“错误处理”的
或die()
方法时,我都会流泪,这种方法在在线PHP教程中仍然很流行。@Alex-exceptions()@Alex,对不起,我以为这是对Michael的问题的回应comment@CyclonePDO并非天生就安全。如果您不使用预先准备好的语句,那么切换到PDO将一无所获。它不安全。这仍然取决于你如何设计你的查询。@Gordon,虽然你可以用这两种方法伤害你的应用程序-我想你可以指出,有更多的方法伤害你自己,不使用PDO更容易伤害你自己。我不确定我是否不想这么说。如果您需要db抽象,则不要争论PDO是否有用。只是说,创建安全代码仍然取决于开发人员。@Aaron,我建议您从最开始的时候开始。您已经知道数据库是什么,所以现在只需要使用示例开始替换mysql调用。请务必阅读用户评论!
$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();