我最近决定从MySQLi跳到PDO,并且有一些困扰我关于PDO准备好的声明.
在MySQLi中,我会写一个典型的获取查询,如下所示:
$db = new mysqli("localhost", "user", "pass", "mydb");
$sql = "SELECT firstCol, secondCol FROM testTable WHERE thirdCol=?";
$stmt = $db->prepare($sql);
$stmt->bind_param("s", $thirdCol);
$stmt->execute();
while( ($row = $stmt->fetch()) )
{
//do something
}
$stmt->close();
$db->close();
当然,进行适当的错误检查.在查询之后我总是关闭语句和数据库连接.使用PDO时,我通过将数据库处理程序设置为null来关闭连接,如下所示:
$db = null;
但声明怎么样?我找到了一个here的帖子,建议使用unset或closeCursor.哪一个更好?我应该像连接一样将它设置为null吗?
解决方法:
with the appropriate error checking of course.
我确信错误检查不太合适.要检查错误,您必须只设置单个mysqli配置选项(以及PDO)并单独执行特定查询.
After the query I always close the statement and the database connection.
说到数据库连接,如果你不得不在同一个脚本中运行多个查询,那你就完全错了.因为您必须再次打开连接以运行另一个查询,这会毫无理由地减慢您的应用程序.
When using PDO I close the connection by setting the database handler to null
就像mysqli一样,如果你在脚本结束时关闭它,那没关系,但没必要.但如果你在每次查询后关闭它,那就错了!
您必须只连接一次,而不是一直使用该单个连接变量.
截至发言,这取决于你.大多数time语句变量被覆盖,这使得先前的实例设置为null.调用函数时,函数结束时,其所有变量都设置为null.当php脚本结束时,它的所有变量都会再次设置为null.因此,作为一项规则,没有什么可担心的.
标签:php,mysql,mysqli,pdo,prepared-statement
来源: https://codeday.me/bug/20190623/1272190.html