Я столкнулся с проблемой. Моя структура отлично работала с PHP 5.3.0. Я обновил свою версию PHP до PHP 5.4.x, и у меня появилось несколько проблем с некоторыми частями моего фреймворка.
После обновления версии PHP PDO lastInsterId()
всегда возвращает 0
.
У меня есть поле автоматического приращения -с именем id
. Он добавляет данные в базу данных без каких-либо проблем.
По какой-то причине я продолжаю получать 0 в качестве идентификатора последней вставки.
Вот мой код;
база данныхobjects.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-запроса(: