Получить значение столбца (например, идентификатор) после mysql INSERT - PullRequest
1 голос
/ 07 января 2010

Могу ли я получить из PHP значение обратно, например, новый идентификатор из строки, которую я только что добавил в базу данных, или я должен сделать SELECT для ее получения?

<?php

$sql = "INSERT INTO my_table (column_1, column_2) VALUES ('hello', 'ciao')";
$res = mysql_query ($sql) or die (mysql_error ());

$sql = "SELECT column_id FROM my_table WHERE column_1 = 'hello'";
$res = mysql_query ($sql) or die (mysql_error ());

$row = mysql_fetch_assoc ($res);
$id = $row["column_id"];
print "my id is = $id";

?>

Ответы [ 3 ]

3 голосов
/ 07 января 2010

Используйте это: http://php.net/manual/en/function.mysql-insert-id.php Выбор может быть опасным, потому что автоинкремент часто означает, что записи не могут быть уникальными, и поэтому не могут быть выбраны однозначно без идентификатора.

1 голос
/ 07 января 2010

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

$result = mysql_query("INSERT INTO tableName (col1) VALUES ('foo')");

print mysql_insert_id();
0 голосов
/ 07 января 2010

Есть встроенная поддержка для него, mysql_insert_id () или что-то еще.

...