如何在php中有效地连接到mysql,而无需重新连接每个查询

我每次学习关于PHP的新东西时都必须重写代码,就像一个 mysql连接不能在一个会话中作为一个句柄一样传递的事实.

你在项目中如何实现MysqL连接?很多人提出“连接池”,但是在阅读手册后,我仍然迷失了.就像:“连接池是MysqL_pconnect!” – 我:“和…?现实中有什么不同吗?你可以在会话中传递一个MysqL_pconnect吗?为什么这个看似神秘的光环?”

让我解释一下我的情况.我有一个名为“query1”的函数

function query1($query)
{
    $db = new MysqL(HOST,USER,PASS,dbnAME);
    $result = $db->query($query);
    $db->close();
    return $result;
}

这似乎是一种查询数据库的浪费和低效的方式(特别是因为您需要MysqL_real_escape_string等函数MysqL句柄).要做什么正确的表格?有人可以帮帮我吗?

谢谢,我真的很感激一个诚实的答案.

通常,一旦页面加载就会发生连接. AKA
class Database{
    public function connect()
    {
         $this->connection = MysqL_connect();
    }

    // This will be called at the end of the script.
    public function __destruct()
    {
        MysqL_close($this->connection);
    }

    public function function query($query)
    {
        return MysqL_query($query,$this->connection);
    }
}
$database = new Database;
$database->connect();

$database->query("INSERT INTO TABLE (`Name`) VALUES('Chacha')");

基本上,您打开页面开头的连接,在最后一页关闭它.然后,您可以在页面中进行各种查询,而不必对连接执行任何操作.

您甚至可以在构造函数中执行MysqL_connect,如Erik所示.

要使用上述使用全局变量(不建议,因为它创建全局状态),你会做一些类似的事情

Global $db;

$db = new Database;
// ... do startup stuff

function doSomething()
{
    Global $db;
    $db->query("Do Something");
}

哦,没有人提到你不必传递一个参数.只需连接

MysqL_connect();

那么MysqL_query将只使用最后的连接,无论范围如何.

MysqL_connect();

function doSomething()
{
    MysqL_query("Do something");
}

根据评论

I think you should use MysqL_pconnect() instead of MysqL_connect(),because MysqL_connect() doesn’t use connection pooling. – nightcoder

你可能想考虑你是否使用MysqL_connect或MysqL_pconnect.但是,您仍然应该只在每个脚本连接一次.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...