【问题标题】:Can a MYSQLI connection be reopened WITHOUT instantiating a new object可以在不实例化新对象的情况下重新打开 MYSQLI 连接吗
【发布时间】:2011-03-30 06:01:27
【问题描述】:

这里只是一个简单的问题:

如果我选择面向对象的风格来与我的数据库交互,即...

$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

然后我使用$mysqli->close(); 在某个时候关闭连接...

我可以通过简单地启动另一个查询$mysqli->query(); 来重新打开该连接,还是必须实例化一个新的 MYSQLI 对象?

【问题讨论】:

  • @YourCommonSense -- 为什么这里的古老答案还不够?
  • @RickJames 最近有一个 :)

标签: php mysql oop object mysqli


【解决方案1】:

不,你必须实例化一个新的 MYSQLI 对象。您可以使用相同的变量$mysqli,但您必须再次编写此代码:

 $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

【讨论】:

    【解决方案2】:

    虽然它不在文档中,但mysqli::connect() 是一种方法,您可以使用它来“重新连接”您的对象 - 似乎只是构造函数的别名。

    <?php
    $host = '127.0.0.1';
    $user = 'user';
    $pass = 'pass';
    $name = 'storage';
    
    $mysqli = new mysqli($host, $user, $pass, $name);
    // Do stuff...
    $mysqli->close();
    // Later on...
    $mysqli->connect($host, $user, $pass, $name);
    

    【讨论】:

    • 我怀疑 1% 的工作是在“新”上,而 99% 的工作是在“连接”上。
    【解决方案3】:

    你不能简单地关闭 mysqli 连接并重新使用它。

    【讨论】:

    • 不仅仅是“可以”,而是“应该”。
    • 例如,当您等待来自集成的数据时,关闭连接并在收到数据后重新打开是一个很好的理由。这样可以避免“连接过多”。
    猜你喜欢
    • 2018-09-12
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    • 2023-02-07
    • 2013-11-10
    • 1970-01-01
    • 1970-01-01
    • 2020-03-02
    相关资源
    最近更新 更多