-1

我想将连接到 mysql 的代码放在 PHP 中的一个单独函数中,然后在其他函数中使用该函数。令人惊讶的是,我一直无法找到有关如何做到这一点的在线资源。我想做这样的事情:

function connect_mysql() {

$con = mysqli_connect("localhost", "root", "somepass", "testdb");

if (mysqli_connect_errno($con)) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

return $con;
}

function some_function() {
connect_mysql(); 
// and use that connection here 
//so that I don't have to retype connection code again
}

非常感谢!

4

2 回答 2

2

我会按照以下方式进行,在其中使用一个静态变量connect_mysql因此只创建一个 MySQL 连接:

function connect_mysql() {
    static $con = null;
    if ($con == null) {
        $con = mysqli_connect("localhost", "root", "somepass", "testdb");
        if (mysqli_connect_errno($con)) {
            echo "Failed to connect to MySQL: " . mysqli_connect_error();
            return null;
        }
    }
    return $con;
}

function some_function() {
    $con = connect_mysql();
    $con->prepare(...);
}

这是单例模式的一个示例。

于 2013-07-01T14:14:38.240 回答
0

二思考虑:

(1) 如果你想继续你的函数中的对象some_function(),那么使用一个变量:

例子:

function some_function() {
    $my = connect_mysql();
    $my->query('some great sql query...');
}

(2) 为了改进您的连接功能connect_mysql(),您应该在连接失败时以定义的状态退出它,可能是这样的:

function connect_mysql() {
    $con = mysqli_connect("localhost", "root", "somepass", "testdb");

    if (mysqli_connect_errno($con)) {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
        return false;   // <- exit here....
    }

    return $con;
}

这不一定是必需的,但它可以帮助您检测函数之外的问题并在代码变大时维护代码。

于 2013-07-01T14:19:53.900 回答