php - 验证是否存在与 mySQL 的连接或让 Apache 执行此操作
问题描述
我创建了一个函数来连接到 php 中的数据库:
function fn_connect($is_write = false)
{
$host = '127.0.0.1';
$db = 'name_db';
if ($is_write) {
$user = 'user_write';
$pwd = 'password_write';
} else {
$user = 'user_read';
$pwd = 'password_read';
}
$conn = new mysqli($host, $user, $pwd, $db);
if ($conn->connect_error) {
die('The database is not available. Please, try again later.');
}
return $conn;
}
当我需要连接时,我会像这样调用它(并关闭它)
$conn = fn_connect(true);
$stmt = $conn->prepare($q);
$stmt->execute();
....
$stmt->close();
$conn->close();
我认为验证连接是否存在是个好主意,这样,我想,我每次都无需连接到数据库,就像这样:
if (!isset($conn)) $conn = fn_connect(true);
$stmt = $conn->prepare($q);
$stmt->execute();
....
$stmt->close();
if (isset($conn)) $conn->close();
这是一个好主意,一个好习惯吗?我是否应该正常连接并让 Apache/PHP 完成其余的工作(无需验证)?
解决方案
在让 php 尝试获取或发送数据之前检查连接是一种很好的做法和良好的风格。
不好的风格是在你的连接中使用 die,因为它会留下一个损坏的页面。
更好的是设计页面,使页面在连接断开时仍然可以工作。
推荐阅读
- python - 动态创建类 - Python
- algorithm - 这个代码块的时间复杂度是多少?
- node.js - sequelize count 不适用于嵌套对象
- perl - Windows 10 上的草莓 perl 在当前目录中找不到模块
- scilab - 在 scilab 中使用 fsolve 时如何克服“scilab 参数函数返回的变量不正确”?
- python - 部署到 Google App Engine Flexible 时 Python 相对路径出现问题
- c++ - 在大数组大小的情况下出现段错误的原因
- javascript - 通过 POST (Ajax) 的数组
- c# - 无法执行程序和程序包
- javascript - 在 vuejs 中使用 v-for 循环?