【问题标题】:What does the `close()` method of the Mysqli Statement?Mysqli 语句的 `close()` 方法是什么?
【发布时间】:2012-04-26 20:13:58
【问题描述】:

有人能告诉我,当你更新、插入、删除时……你应该像mysqli_stmt::close(); 那样关闭它吗?我查了 PHP 手册,不明白 close() 究竟做了什么。

例子:

$stmt = $dbh->prepare("SELECT `user_email` FROM `users` WHERE `user_email` = ? LIMIT 1");
$stmt->execute(array($email));
$stmt->close();

我的问题的下一部分是,如果作为示例,对于我在 transaction 中执行的每个查询,在每个 execute() 之后,我在 transaction 中有多个更新查询我应该单独关闭它们吗? ...因为这是一个事务,我不确定我是否需要在每次执行()之后使用 $stmt->close();;还是只使用一个$stmt->close();

【问题讨论】:

标签: php mysqli


【解决方案1】:

PDO 没有 close() 方法,而是关闭连接,只需将数据库变量设置为 null - 这将关闭连接。

$stmt = null;

要回答您的第二个问题,您只需关闭连接一次。执行完所有需要对数据库执行的查询后。

【讨论】:

    【解决方案2】:

    您似乎正在使用 mysqli 关闭方法。 $stmt->close() 方法只是简单地关闭之前打开的数据库连接(http://www.php.net/manual/en/mysqli.close.php)。

    编辑:如果您使用的是 PDO,我根本不明白,为什么您不利用命名参数而不是问号的可能性。也就是说,为什么很多人选择 PDO 而不是 mysqli - 您可能对查询/语句有更好的全面了解。

    【讨论】:

    • 我是 pdo 的新手,在某处看到它 $stmt->close() 并认为这意味着关闭准备好的语句并且 $stmt = null 将关闭连接,所以基本上你只使用 $stmt- >close() 如果使用 mysqli 程序样式? (即,我不会在我在原始帖子中给出的示例语句中使用 $stmt->close() )?相反,我会使用 $stmt = null;关闭与 db 的连接?谢谢phplover
    • 不完全是。 $stmt->close() 用于 mysqli OOP 风格,mysql_close 或 mysqli_close 是 mysql(i) 程序风格。是的,要在 PDO 中关闭与数据库的连接,只需将语句设置为 NULL。
    • 命名参数或问号是我所学的个人选择问题,我只是个人觉得问号更容易,而且我从 mysql_ 迁移到 PDO 的原因是为了安全性,因为mysql_ 现在变老了,我想学习并保持最新状态,我还没有学习 OOP,但是一旦我学会了 PDO 就可以了,谢谢 phplover
    • 没错,这是个人选择的问题。我自己不使用 PDO,但我已经阅读了很多关于它的内容。就我而言,PDO 和 mysqli 的安全级别或有效性级别几乎相同。可能会在 2 年内出现一个新的 mysql API,希望它会得到更多改进。在我看来,选择 PDO 而不是 mysqli 的主要好处是命名参数,并且 PDO 可以在 12 个不同的驱动程序上运行。否则我不明白,为什么人们不只使用 mysqli - 许多方法与旧的 mysql API 非常相似。
    • 但是是的,在 PDO 和 mysqli 之间选择什么肯定是个人选择的问题。
    猜你喜欢
    • 1970-01-01
    • 2019-09-16
    • 2011-07-09
    • 2014-06-26
    • 2011-02-22
    • 2011-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多