我正在将代码库从mysql更新为pdo,这是我第一次完成这样的项目,因此我一直在研究最佳实践,并希望获得一些投入。这是旧代码:
$link = @mysql_connect('localhost', "xxx", "xxx")
or die('Could not connect: ' . mysql_error());
mysql_select_db("xxx") or die('Could not select database');
在我的代码中,我将所有登录凭据放入一个单独的文件中,并使用ip地址,用户名和密码(而不是localhost)进行连接。
try {
$pdo = new PDO($dsn, $user, $password);
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e){
log_error("Failed to run query", $e->getMessage(), $e->getCode(), array('exception' => $e));
die('Could not connect!');
两个问题,这是使用die方法处理错误并登录到客户端的一种很好的替代方法,这也是正确的连接方式吗?使用localhost与服务器IP地址进行连接是否有优势?感谢您的帮助!
这是使用die方法的好选择吗?
您所做的作为迁移的一部分是合理的-它的行为应与以前相同。但是,您可能会考虑not捕获PDOException
并允许将其一直抛出到全局错误处理程序。这样比较好,因为它的代码更少,而且您不会仅捕获die
的异常。但是在进行更改之前,您应该了解它在生产系统中的行为方式(您会在日志中看到错误)吗?
这是正确的连接方式吗?
是,似乎您正确使用了PDO
。
使用本地主机与服务器IP地址进行连接是否有优势?
您的意思是在生产中?最佳实践是在单独的服务器上运行数据库-在这种情况下,localhost
显然不起作用。如果负载很轻,并且您现在正在同一盒子上运行数据库和PHP服务器,那么无论哪种方式都没关系。