Joh*_*nny 1 php mysql pdo bindvalue bindparam
到目前为止,我一直在使用PDO->bindParam阅读手册,我PDO->bindValue从我可以告诉的PDO->bindValue传递值中找到PDO->bindParam通过引用传递,这是唯一的区别吗?
$modThread = db()->prepare("UPDATE `threads` SET `modtime` = UNIX_TIMESTAMP( ) WHERE `threadid` =:id LIMIT 1");
while(something)
{
$modThread->bindParam(':id', $thread);
$modThread->execute();
//*******************HERE********************//
}
Run Code Online (Sandbox Code Playgroud)
在阅读手册时我发现:PDO->closeCursor我应该把它放在标记的位置吗?它是可选的/自动调用的吗?似乎只有某些司机需要它.是否会在不需要/支持它的驱动程序上调用它会导致错误?MySQL怎么样?
小智 5
事实并非如此.如果您发现自己需要使用closeCursor,那么最佳时间之一是插入/更新/删除命令,很少用于已经获取结果的SELECT语句.
例如,如果从表中选择所有记录,然后发出$ stmt-> fetch(),这实际上会立即完成closeCursor的目标,因为行现在不再处于未获取状态.
从手册:
当先前执行的PDOStatement对象仍具有未取消的行时,此方法对于不支持执行PDOStatement对象的数据库驱动程序非常有用.如果您的数据库驱动程序受此限制,则问题可能表现为无序错误.
当您真正需要closeCursor时,在以下任何一个实例中:
当您不需要closeCursor语句时:
正如关闭游标一样有用的是unset()(即:unset($ stmt))并将语句设置为null($ stmt = null),打开内置垃圾收集器的大门以清除所有内容.
有关更多信息,请参阅手册:http://php.net/manual/en/pdostatement.closecursor.php