Доступ к идентификатору объекта, вставленному после подготовленного оператора в PHP, с помощью MYSQLi

Мне нужен идентификатор последнего вставленного объекта. Я использую подготовленные операторы, чтобы избежать внедрения 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, и это сработало.

6
задан user1165788 9 February 2012 в 19:21
поделиться