php получает идентификатор последней вставленной записи и вставляет ее в другую таблицу - PullRequest
0 голосов
/ 01 июня 2010

Я пытаюсь получить идентификатор последней записи, вставленной в таблицу «авторы», и вставить полученный идентификатор в таблицу «статьи»; вот мой код:

$title = mysql_real_escape_string($_POST[title]);
$body = mysql_real_escape_string($_POST[body]);
$category = mysql_real_escape_string($_POST[category]);

$insert_author="INSERT INTO authors (name) VALUES ('$title')";
$select_author= mysql_query("SELECT LAST_INSERT_ID()");

$authId = mysql_fetch_array($select_author);
$query="INSERT INTO articles (body, date, category, auth_id) VALUES ('$body', '$date_now', '$category', '$authId')";

это не работает ...

Есть идеи, пожалуйста?

Заранее спасибо

Mauro

Ответы [ 4 ]

2 голосов
/ 01 июня 2010

Последний идентификатор вставки можно получить с помощью mysql_insert_id()

$insert_author="INSERT INTO authors (name) VALUES ('$title')";
mysql_query($insert_author) or die(mysql_error());

$authId = mysql_insert_id();

$query="INSERT INTO articles (body, date, category, auth_id) VALUES
('$body', '$date_now', '$category', '$authId')";

Примечание , что вам не хватало mysql_query функции для запроса вставки, я добавил это также в коде выше.

1 голос
/ 01 июня 2010

Попробуйте mysql-insert-id вместо.

1 голос
/ 01 июня 2010

Что именно не работает. $authId содержит ожидаемое значение? Вы бросили это, чтобы проверить?

Кроме того, вы забыли второе mysql_query().

0 голосов
/ 01 июня 2010

Как следует из названия, mysql_fetch_array($select_author) возвращает массив, поэтому вам нужно получить конкретное значение в этом массиве для вставки в другую таблицу.

...