首页 > 解决方案 > 验证是否存在与 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 完成其余的工作(无需验证)?

标签: phpmysql

解决方案


在让 php 尝试获取或发送数据之前检查连接是一种很好的做法和良好的风格。

不好的风格是在你的连接中使用 die,因为它会留下一个损坏的页面。

更好的是设计页面,使页面在连接断开时仍然可以工作。


推荐阅读