我最近决定从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
吗?
答案 0 :(得分:4)
当然会进行适当的错误检查。
我确信错误检查不太合适。要检查错误,您必须设置单个mysqli配置选项(以及PDO)并单独执行特定查询。
在查询之后,我总是关闭语句和数据库连接。
说到数据库连接,如果你不得不在同一个脚本中运行多个查询,那么你做错了完全错误。因为您必须再次打开连接以运行另一个查询,这会毫无理由地减慢您的应用程序。
使用PDO时,我通过将数据库处理程序设置为null来关闭连接
就像使用mysqli一样,如果你在脚本结束时关闭它,那没关系,但是没必要。但如果你在每次查询后关闭它,那就错了!
您必须只连接一次,而不是一直使用该单个连接变量。
截至发言,这取决于你。大多数time语句变量被覆盖,这使得先前的实例设置为null。调用函数时,函数结束时,其所有变量都设置为null。当php脚本结束时,它的所有变量都会再次设置为null。因此,通常没有什么可担心的。