問題が発生しました。私のフレームワークは、PHP 5.3.0 で問題なく動作していました。PHP のバージョンを PHP 5.4.x にアップグレードしたところ、フレームワークの一部でいくつかの問題が発生し始めました。
PHP のバージョンアップ後はPDO lastInsterId()
必ず0
.
という自動インクリメント フィールドがありid
ます。問題なくデータベースにデータを追加しています。
何らかの理由で、最後の挿入 ID として 0 を取得し続けます。
これが私のコードです。
データベースオブジェクト.php
public static function create () {
global $db;
$attributes = self::sanitize(static::$fields);
$sql = "INSERT INTO ".PREFIX.static::$table_name." (";
$sql .= join(", ", array_keys($attributes));
$sql .= ") VALUE (:";
$sql .= join(", :", array_keys($attributes));
$sql .= ")";
return ($db->crudQuery($sql, $attributes)) ? true : false;
}
public static function lastInsertID () {
global $db;
return $db->handler->lastInsertId();
}
データベース.php
public function crudQuery($sql, $data) {
$sth = $this->handler->prepare($sql);
return $sth->execute($data);
}
最初create()
のメソッドが呼び出され、次にcrudQuery()
メソッドが呼び出されます。前に述べたように、MySQL データベースにデータを正常に追加できます。残念ながら、lastInsterID()
メソッドを呼び出すと、常に 0 が返されます。
SQL Query (: