Intereting Posts
Выполнять Javascript, когда Facebook сканирует веб-сайт Переменные сеанса исчезают для некоторых пользователей (drupal) Чтобы понять заголовок PHP () Есть ли стандартный способ поменять запрос из идентификатора на другой столбец, например «имя»? MySql создает или обновляет строку с помощью ip? Как передать параметры из командной строки в $ _POST в php-скрипте? Пропустите знак процента (%) в URL-адресе и получите точное его значение, используя php PHP- «Определено или вышло» в начале многих файлов? laravel 5.4: Laravelcollective / html v5.3.0 требует подсветки / просмотра 5.3. * Как работают сеансы PHP, когда файлы cookie отключены? Как преобразовать строку, которая выглядит как шестнадцатеричный номер, в фактический шестнадцатеричный номер в php? Предупреждение: mysql_select_db () Доступ запрещен для пользователя '' @ 'localhost' (с использованием пароля: НЕТ) Загрузите видео на Youtube с помощью API Youtube V3 и PHP Как проверить, действителен ли токен доступа, используя только REST API Google Диска? Создание / редактирование динамической страницы php

Как получить последний вставленный вставленный идентификатор строки из PDO

Я следую структуре mvc в PHP, и я хочу получить последний вставленный идентификатор строки.

Я создал следующий код sql:

$sql = "INSERT INTO song (artist, track, link) VALUES (:artist, :track, :link)"; $query = $this->db->prepare($sql); $query->execute(array(':artist' => $artist, ':track' => $track, ':link' => $link)); echo $query->lastInsertId(); // To retrieve last inserted row ID. 

но, к сожалению, я получаю эту ошибку: Fatal error: Call to undefined method PDOStatement::lastInsertId()

Я также пробовал эти ссылки стека, но не работал для меня, поэтому буду рад, если вы поможете мне получить идентификатор.

Я также делюсь файлом controller.php здесь.

 /** * This is the "base controller class". All other "real" controllers extend this class. */ class Controller{ /** * @var null Database Connection */ public $db = null; /** * Whenever a controller is created, open a database connection too. The idea behind is to have ONE connection * that can be used by multiple models (there are frameworks that open one connection per model). */ function __construct(){ $this->openDatabaseConnection(); } /** * Open the database connection with the credentials from application/config/config.php */ private function openDatabaseConnection(){ // set the (optional) options of the PDO connection. in this case, we set the fetch mode to // "objects", which means all results will be objects, like this: $result->user_name ! // For example, fetch mode FETCH_ASSOC would return results like this: $result["user_name] ! // @see http://www.php.net/manual/en/pdostatement.fetch.php $options = array(PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ, PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING); // generate a database connection, using the PDO connector // @see http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/ $this->db = new PDO(DB_TYPE . ':host=' . DB_HOST . ';dbname=' . DB_NAME, DB_USER, DB_PASS, $options); } /** * Load the model with the given name. * loadModel("SongModel") would include models/songmodel.php and create the object in the controller, like this: * $songs_model = $this->loadModel('SongsModel'); * Note that the model class name is written in "CamelCase", the model's filename is the same in lowercase letters * @param string $model_name The name of the model * @return object model */ public function loadModel($model_name){ require 'application/models/' . strtolower($model_name) . '.php'; // return new model (and pass the database connection to the model) return new $model_name($this->db); } } 

Ты почти там.

Если вы посмотрите на страницу руководства lastInsertId , она вызывается в дескрипторе базы данных – вы в настоящее время вызываете ее в инструкции.

Вам просто нужно позвонить:

 $this->db->lastInsertId(); 

вы можете попробовать следующее:

 $query = "INSERT INTO song (artist, track, link) VALUES (:artist, :track, :link)"; $stmt = $pdo->prepare($query); $params = array( "artist" => $artist, "track" => $track, "link" => $link, ); $data = $stmt->execute($params); $insert_id = $pdo->lastInsertId();