2012-03-30 3 views
0

Я использую PHP/MySql.Возвращает следующую последовательность A_I при вставке строки?

Если у меня есть две таблицы (гипотетически) следующим образом:

id 
name 

и

parent_id 
action 

и удостоверение личности в первой таблице устанавливается на AUTO_INCREMENT, если бы я хотел, чтобы вставить данные в обеих таблицах как можно меньше запросов, без реструктуризации базы данных, как я могу это сделать? Мне нужно следующее значение A_I, которое будет присвоено имени, которое вставлено в таблицу, чтобы вставить в качестве родительского идентификатора для второй таблицы.

Возможно, плохой пример, но это проблема, которую я пытаюсь решить. В тот момент, когда мне нужно сделать следующее:

<?php 
$mysqli->query("INSERT INTO table_1 (name) VALUES ('Bob'); 

$names = $mysqli->query("SELECT * FROM table_1 WHERE name = 'Bob'"); 

while($name = $names->fetch_assoc()) { 

    $mysqli->query("INSERT INTO table_2 (parent_id, action) VALUES ('".$name['id']."', 'run')"); 

} 
?> 

Но, очевидно, этот метод ломается, если есть люди с тем же именем.

Спасибо.

+0

почему бы вам не попробовать SP для это? –

+0

http://www.php.net/manual/en/mysqli.insert-id.php –

+0

@PsyCoder - Извините, я не знаю, что означает SP. – Anonymous

ответ

3

Все, что вам нужно, это http://php.net/manual/en/mysqli.insert-id.php

<?php 
    $mysqli->query("INSERT INTO table_1 (name) VALUES ('Bob')"); 
    $mysqli->query("INSERT INTO table_2 (parent_id, action) VALUES ($mysqli->insert_id,'run')"); 


?> 
+0

Спасибо, это именно то, что я был после. – Anonymous

+0

@ Anonymous- Это нормально, примите ответ! – fancyPants

+0

Пришлось ждать 6 минут. :-) – Anonymous

1

Вы можете использовать PHP функцию $mysqli->insert_id или функции MySQL last_insert_id()

Я хотел бы сделать это следующим образом:

$mysqli->query("INSERT INTO table_1 (name) VALUES ('Bob')"); 
$mysqli->query("INSERT INTO table_2 (parent_id, action) VALUES (LAST_INSERT_ID(),'run')"); 
+1

ОП использует mysqli, а не mysql –

+0

Хорошо, я обновлю свой ответ – haltabush

Смежные вопросы