2012-12-29 4 views
0

에 1 개 이상의 행을 반환하위 쿼리 내가 2 개 테이블이 2 삽입

+------+-----------+ 
| id | Name | 
+------+-----------+ 

tblItems (이 표는 선택 얼마나 많은 사용자에 따라 여러 개의 체크 박스 값을 허용) :

+------+-----------+---------------+ 
| id | items | name_id | 
+------+-----------+---------------+ 

name_idtblUser의 id 값을 가져옵니다.
나는 name_idtblUser의 ID 값을 얻기 위해이 코드를 사용 :

for ($i=0; $i<sizeof($checkbox);$i++){ 
    $sql2="INSERT INTO tbl_trainings VALUES (NULL, '".$checkbox[$i]."', (SELECT id FROM tbl_info))"; 
    $result2=mysql_query($sql2); 
} 

그것은 데이터베이스에 다음과 같이 표시됩니다 데이터의 첫 번째 INSERT에 잘 작동 :

+------+-----------+---------------+ 
| id | items | name_id | 
+------+-----------+---------------+ 
| 1 | Bucket | 1   | 
+------+-----------+---------------+ 
| 2 | Tree  | 1   | 
+------+-----------+---------------+ 
| 3 | House | 1   | 
+------+-----------+---------------+ 

그러나의를 데이터의 다음 또는 두 번째 INSERT은 오류가됩니다.

if($_POST["Submit"]=="Submit"){ 
    $sql1="INSERT INTO tblUser VALUES (NULL, '$fname', '$lname')"; 
    $result1=mysql_query($sql1); 
    for ($i=0; $i<sizeof($checkbox);$i++){ 
    $sql2="INSERT INTO tblItems VALUES (NULL, '".$checkbox[$i]."', (SELECT id FROM tblUser))"; 
     $result2=mysql_query($sql2); 
    } 
} 

if($result2 && result1){ 
    echo"<center>"; 
    echo"<h1>"; 
    echo "SUCCESSFUL!"; 
    echo"</h1>"; 
    echo"</center>"; 
} 
else { 
    echo "ERROR". mysql_error(); 
} 

그리고 데이터베이스에서 원하는 출력은 다음과 같습니다 : 오류이 전체 코드입니다, 하위 쿼리 방법에 의해, mysql_error();

에서 1 개 이상의 행을 반환

입니다

+------+-----------+---------------+ 
| id | items | name_id | 
+------+-----------+---------------+ 
| 1 | Bucket | 1   | 
+------+-----------+---------------+ 
| 2 | Tree  | 1   | 
+------+-----------+---------------+ 
| 3 | House | 1   | 
+------+-----------+---------------+ 
| 4 | Tree  | 2   | 
+------+-----------+---------------+ 
| 5 | Air plane | 2   | 
+------+-----------+---------------+ 
| 6 | Bucket | 3   | 
+------+-----------+---------------+ 

어떤 도움을 주시면 감사하겠습니다. 미리 감사드립니다.

+2

를 사용해야합니다 where 절 선택하려는 느릅 나무 사용자를 말하고. – HMarioD

답변

1
SELECT id FROM tblUser 

은 테이블에서 모든 ID를 반환합니다.

$sql1="INSERT INTO tblUser VALUES (NULL, '$fname', '$lname')"; 
$result1=mysql_query($sql1); 
$user_id = mysql_insert_id(); 
for ($i=0; $i<sizeof($checkbox);$i++){ 
    $sql2="INSERT INTO tblItems VALUES (NULL, '".$checkbox[$i]."', $user_id)"; 
    $result2=mysql_query($sql2); 
} 

표준 MySQL의 기능은 지원되지 않습니다 있습니다 :

당신은 MySQL을 대신 LAST_INSERT_ID 사용합니다. securety 이유의

+0

구문 오류가 발생했습니다. mysql last_insert_id; – Jeyrus

+0

죄송합니다. 게시물을 수정했습니다. – AlecTMH

+0

거의 다 있습니다 ...하지만 무슨 일이 일어나고있는지는 name_id입니다 : 1 1 2 3 4 5 그리고 2 번째 인서트는 1 2 2 3 4 5 6 7 (주문) – Jeyrus