我们是否应该始终跟踪查询和数据库错误?
是的,是的,是的!
跟踪错误消息是编程的基石。程序员是树林里无助的婴儿,没有错误信息。
但是,您选择的跟踪方式很糟糕。
错误消息有两个目的地:
- 在开发服务器上,在屏幕上显示它们非常方便
- 但在实时服务器上,他们应该被记录下来
因此,您必须使您的跟踪代码能够同时做到这两点。因此,
永远不要直接回显错误消息。
改用内置的 PHP 机制 - 引发错误或异常。
if (!$mysqli = new mysqli('localhost', 'root', ''))
throw new Exception( $mysqli->connect_errno . $mysqli->connect_error);
}
if (!$mysqli->query('CREATE DATABASE mywebsite'))
throw new Exception( $mysqli->error );
}
这样,您将拥有可靠且方便的报告系统,可以通过单个 PHP 配置选项进行控制。
因此,在本地开发服务器上以这种方式配置 PHP:
error_reporting(E_ALL);
ini_set('display_errors',1);
并且您将能够在屏幕上看到所有错误消息在
实时服务器上您也必须跟踪它们,但改为记录它们:
error_reporting(E_ALL);
ini_set('display_errors',0);
ini_set('log_errors',1);
尽管存在一种常见的错觉,但对于实时服务器来说,错误消息比对于开发者来说更重要。因此,既不error_reporting(0)
也不@
应该以“不向用户显示错误消息”为借口。不想显示?关闭显示,但不关闭错误消息本身。
为了简化 的日常使用mysqli_query()
,这个函数必须被封装到一些用户定义的函数或方法中——所以,你可以用它来调用它
$db->query('CREATE DATABASE mywebsite');
在内部完成所有错误处理工作 - 这是避免手动错误处理但始终保持值班的唯一正确方法。
而且,关于-在整个应用程序"some db connections"
中应该只有一个(具有相同的凭据)。将连接代码放入所有页面中包含的引导文件中。