Мне нужен идентификатор последнего вставленного объекта.Я использую подготовленные заявления, чтобы избежать внедрения SQL.Но я не уверен, как получить идентификатор.
$sql = "INSERT IGNORE INTO faculty (id, term, role, prefix, first_name,
middle_name, last_name, suffix) VALUES (?,?,?,?,?,?,?,?)";
if (!($stmt = $mysqli->prepare($sql)))
echo "Faculty Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
$stmt->bind_param('sissssss',
$faculty['id'],
$faculty['term'],
$faculty['role'],
$faculty->name->prefix,
$faculty->name->first,
$faculty->name->middle,
$faculty->name->last,
$faculty->name->suffix
);
if (!$stmt->execute())
echo "Faculty Execute failed: (" . $mysqli->errno . ") " . $mysqli->error;
$result = $stmt->insert_id;
echo "\n Result:" . $result;
$stmt->close();
Результат равен 0 всегда, несмотря на наличие записи в базе данных
Решение Элемент былвставляется в базу данных.Проблема заключалась в том, что когда я создал идентификатор таблицы, это не целое число, а varchar, представляющий идентификатор сотрудника.Чтобы исправить это, я добавил идентификатор сотрудника в качестве дополнительного столбца в таблице и использовал первичный ключ id по умолчанию int auto_increment, и он работал.