2014-01-19 4 views
0

나는 게시물이있는 블로그에서 작업하고 있습니다.php와 mysqli를 사용하여 두 개의 테이블에 삽입하려고 시도했습니다.

$titel = $_POST['titel']; 
$post = $_POST['post-text']; 

$sql= 
"INSERT INTO posts (titel, post) 
VALUES ('$titel', '$post') 
INSERT INTO post_categories (idposts) 
VALUES ('". $mysqli->insert_id() ."') 
"; 

if (!mysqli_query($link,$sql)) 
    { 
    die('Error: ' . mysqli_error($link)); 
    } 
echo "1 record added"; 
mysqli_close($link); 

그러나이 didn를 : 나는 (게시물에 대한 권리 범주를 보여주기 위해) 3 표

게시물, 카테고리 및 Post_categories에 삽입 할

나는 같은 mysqli를 사용하여 모든 노력을 일하지 마라. 나는 지금 2 시간 동안 붙어있어, 나는 거의 이것을 포기하고있다. Mysqli에서이 작업을 수행하는 방법을 알지 못합니다. 나는 그것이 MySQL에서 어떻게 작동하는지 알았다.

누군가 나를 도와 줄 수 있기를 바랍니다.

내 테이블 구조는 다음과 같습니다

게시물

idposts
titel

카테고리

idcategor을 추가
포스트 이거
카테고리

post_categories

ID
idposts
idcategories

+0

"여러 테이블에 MySQL 삽입"을 검색하십시오. 다음과 같은 몇 가지 예제가 있습니다 : http://stackoverflow.com/questions/10043887/sql-insert-into-multiple-tables 기본적으로 "stored proc"를 만들지 않으면 가능하다. 첫 번째 삽입 후 두 번째 삽입 등이 필요합니다. – mogosselin

답변

0

여러 테이블에 삽입하기 때문에 트랜잭션도 사용하십시오. 또한 쿼리가 실행되기 전에 mysql_insert_id()를 얻을 수 없다.

mysqli_autocommit($link, FALSE); 
$sql = "INSERT INTO posts (titel, post) VALUES ('".$titel."', '".$post."')"; 
if (mysqli_query($link, $sql) === TRUE) { 
    $postId = mysqli_insert_id($link); 
    $sql1 = "INSERT INTO post_categories (idposts) VALUES ('".$postId."')"; 
    mysqli_query($link, $sql1); 
} 
if (!mysqli_commit($link)) { //commit transaction 
    print("Table saving failed"); 
    exit(); 
} 
+0

이것은 매력처럼 작동했습니다! 고마워요. 내 마지막 '큰'프로젝트가 오래된 엿 같은 mysql 이었기 때문에 나는 Mysqli에 상당히 익숙하다. –

0

당신은 당신이 정말로 원하는 경우 대신이 mysqli_multi_query을 사용해야 mysqli_query를 사용하여 동시에 두 개의 쿼리를 실행할 수 없습니다 그래서

+0

두 테이블에 삽입하는 가장 좋은 방법입니까? 나는 잘 모르겠다. –

관련 문제