我最近决定从 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 https://stackoverflow.com/questions/5685879/is-there-a-function-for-closing-a-mysql-prepared-statement-with-pdo这表明要么使用unset
or closeCursor
。哪一个更好?我应该将其设置为null
喜欢连接吗?
当然还有适当的错误检查。
我确信错误检查不太合适。要检查错误,您必须仅设置单个 mysqli 配置选项(以及 PDO)并保留特定查询的执行。
查询后我总是关闭语句和数据库连接。
说到数据库连接,如果您必须在同一脚本中运行多个查询,那么您就这么做了完全错误。由于您必须再次打开连接才能运行另一个查询,这会无缘无故地减慢您的应用程序。
使用 PDO 时,我通过将数据库处理程序设置为 null 来关闭连接
就像 mysqli 一样,如果您在脚本末尾关闭它,这是可以的,但没有必要。但如果您在每次查询后都关闭它,那就错了!
您只需连接一次,然后一直使用该单个连接变量。
至于声明,这取决于你。大多数情况下语句变量会被覆盖,这使得先前的实例设置为空。当您调用函数时,函数结束时其所有变量都将设置为 null。当 php 脚本结束时,它的所有变量都会再次设置为 null。因此,通常没有什么可担心的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)