【发布时间】:2014-06-26 21:31:47
【问题描述】:
对于mysqli的准备好的语句是如何在内部处理的,我有点困惑。
mysqli::prepare($query); 返回一个mysqli_stmt 对象。文档说,声明在不再需要后应立即关闭。到目前为止,一切顺利。
但是,如果我调用mysqli::close(),语句是否仍需要显式关闭?此外,语句对象是否有自己的数据库连接,并且即使在这样的情况下也能继续可靠地工作:
<?php
$oDb = new mysqli('localhost', 'root', '', 'test');
$oStmt = $oDb->prepare("INSERT INTO tbl_test (a,b,c) VALUES (?,?,?)");
$oDb->close();
$oStmt->bind_param('sss', 'Hello', 'World', '!');
$oStmt->execute();
//do some more stuff
$oStmt->close();
或者调用mysqli::close() 也会关闭所有语句?
【问题讨论】:
-
除了你可以尝试一下,也许自己回答这个问题,这是一个很好的问题。
-
请注意,我询问它是否会继续“可靠地”工作。我对只测试一个案例并得出结论它总是(或永远不会)工作变得谨慎。尤其是在 PHP 中。
标签: php mysqli prepared-statement