[英]Any chance PDO will return a “wrong” last inserted ID with a static/singleton shared database object?
对于MySQL / PDO,我相信PDO :: lastInsertID()返回该连接最后插入的对象的ID。 我的PDO对象包含在任何方法都可以调用的singleton对象中,因此每个HTTP请求到服务器的连接只有一个数据库。
class Database {
public $db;
private static $dsn;
private static $instance;
private function __construct()
{
$this->db = new PDO( self::$dsn );
}
public function __destruct()
{
$this->db = null;
}
public static function getInstance()
{
if ( !isset( self::$instance ) ) {
$object = __CLASS__;
self::$instance = new $object;
}
return self::$instance;
}
}
$database = Database::getInstance();
$handle = $database->db->prepare(); // etc etc etc
如果我错了,请纠正我,但我相信对Apache的每个HTTP请求都产生一个单独的PHP实例,因此我不认为在这些PHP实例之间共享单例,并且由于代码中没有并发性,因此我认为应该线性发生。 因此,我认为这种情况不会发生:
已经阅读这些,找不到答案:
PDO最后插入ID总是正确的吗? http://php.net/manual/en/pdo.lastinsertid.php
如果您确实像示例中那样在单个脚本中检查过代码-在运行查询B之后获取查询A的插入ID-肯定会有不一致之处。
只需在插入后的下一行获取您的插入ID,就不会有任何问题。
HTTP和单例与此处无关。
这是此类恐惧症的经验法则:请考虑您的案例是否独特。 对于不一致的自动增量,请考虑以下前提:
您可以得出一个结论:只要您找不到有关此类灾难的任何证据-很可能从未发生过。
真诚的,上校。 常识。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.