Что не так с моим кодом, чтобы получить последний идентификатор вставки? - PullRequest
0 голосов
/ 17 января 2019

Это мой код для вставки даты в базу данных. Все хорошо, за исключением того, что я не могу получить insert_id.

if ($_SERVER['REQUEST_METHOD'] == 'POST') 
{
    $data_to_store = filter_input_array(INPUT_POST);
    $db = getDbInstance();
    $Stats = $db->insert ('images', $data_to_store);
    $last_id = $db->insert_id();

    if($Stats)
    {
        $_SESSION['success'] = "Record added successfully!";
        header('location: index.php');
        exit();
    }  
}

Показывает:

Fatal error: Uncaught Error: Call to undefined method MysqliDb::insert_id() in

Мой БД:

 function getDbInstance() { 
    return new MysqliDb(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME); 
 }

Что не так?

Ответы [ 3 ]

0 голосов
/ 17 января 2019

Из того, что я знаю, MysqliDb не имеет функции последней вставки идентификатора, как вы пытались: insert_id.

Есть два способа сделать это.

  1. Измените библиотеку, чтобы использовать что-то вроде этого PDO :: lastInsertId или
  2. Вы можете просто выполнить запрос на выборку и получить последний идентификатор в вашей таблице.
0 голосов
/ 17 января 2019

insert_id - это свойство, а не метод, поэтому в нем не должно быть скобок. так должно быть

$last_id = $db->insert_id;

не

$last_id = $db->insert_id();
0 голосов
/ 17 января 2019

Поскольку класс PHP для mysqli называется mysqli, я предполагаю, что вы используете PHP-MySQLi-Database-Class, имя класса которого MysqliDb. Эта информация важна и отсутствует в вашем посте, великолепно!

Если вы посмотрите на класс, вы увидите, что нет функции с именем insert_id с 0 параметрами. Функция, которую вы ищете, называется getInsertId. Как указано в источнике .

...