платформа зенда добирается, в последний раз вставляют идентификатор много строки, вставляют использование, выполняются

Как я получил бы последний вставленный идентификатор с помощью многострочной вставки? Вот мой код:

$sql='INSERT INTO t (col1, col2, col3) VALUES (1, 2, 3), (4, 5, 6), (7, 8, 9)'; // example
$stmt = $contactsTable->getAdapter()->prepare($sql);
$stmt->execute(); 
$rowsAdded=$stmt->rowCount(); // mysql_affected_rows
$lastId=$stmt->lastInsertId();
echo '<br>Last ID: '.$lastId;

Кроме того, есть ли метод в ZF для получения следующего идентификатора вставки перед вставкой?

спасибо

5
задан EricP 5 September 2013 в 12:45
поделиться

3 ответа

Я полагаю, что тип, используемый для общего класса, зависит от конкретной сборки (как и большинство классов .NET), поэтому я не думаю, что вы получите что-либо еще без создания этой последовательности вручную путем отражения или анализа последовательности.

OTOH я не думаю, что использование имен типов в качестве ключей является хорошей идеей, может, вам стоит подумать о получении какого-то другого ключа (но я не знаю требований, поэтому я не могу рекомендовать что-то другое)

-121--2964801-

Конечно:

try {
   throw new Exception('Something bad');
} catch (Exception $e) {
    // Do nothing
}

Вы можете прочитать документацию PHP по исключениям .

-121--947686-
$lastId=$contactsTable->getAdapter()->lastInsertId();

Это сработало.

10
ответ дан 18 December 2019 в 11:56
поделиться

Итак, вот полный рабочий код, который я использую для создания многорядной вставки, получение добавленных строк и последнего вставленного ID:

$contactsTable = new Contacts_Model_Contacts();
$sql='INSERT INTO t (col1, col2, col3) VALUES (1, 2, 3), (4, 5, 6), (7, 8, 9)'; // example
$stmt = $contactsTable->getAdapter()->prepare($sql);
$stmt->execute(); 
$rowsAdded=$stmt->rowCount(); // mysql_affected_rows
$lastId=$contactsTable->getAdapter()->lastInsertId(); // last inserted id
echo '<br>Last ID: '.$lastId;
3
ответ дан 18 December 2019 в 11:56
поделиться

Этот код должен работать, но он только заметят идентификатор вашей последней вставки.

Вы можете получить следующий автоинкремент с этим запросом MySQL:

SELECT Auto_increment FROM information_schema.tables WHERE TABLE_SCHEMA = 'your_db_name' AND TABLE_NAME='the_table_you_want';
0
ответ дан 18 December 2019 в 11:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: