2012-03-30 1 views
0

저는 PHP/MySql을 사용하고 있습니다.행을 삽입 할 때 A_I의 다음 순서를 반환 하시겠습니까?

나는 두 개의 테이블 (가설)으로는 다음이있는 경우 :

id 
name 

parent_id 
action 

그리고 첫 번째 테이블에서 ID를 내가 두 테이블에 데이터를 삽입하고자한다면, AUTO_INCREMENT로 설정 가능한 한 적은 수의 쿼리로 데이터베이스를 재구성하지 않고 어떻게 할 수 있습니까? 두 번째 테이블의 부모 ID로 삽입 할 테이블에 삽입 된 이름에 다음 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')"); 

} 
?> 

분명히이 방법은 동일한 이름을 가진 사람이있을 경우 중단됩니다.

감사합니다. 당신은 last_insert_id()

내가 그것을 이런 식으로 할 것이다 PHP 함수 $mysqli->insert_id 또는 MySQL의 기능을 사용할 수 있습니다

+0

입니다 왜 당신은을위한 SP를 시도 해달라고 이? –

+0

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

+0

@PsyCoder - 죄송합니다. SP의 의미를 모르겠습니다. – Anonymous

답변

1

:

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

OP는 mysqli를 사용하지만 mysql을 사용하지 않습니다. –

+0

좋은 지적, 대답을 업데이트하겠습니다. – haltabush

관련 문제