2011-03-22 113 views
0

我有以下表格:PHP交易和mysqli_insert_id

thread: id, title, content, created 
thread_tags: tag_id, thread_id 
tag: id, name 
author_threads: thread_id, author_id 

这是我常做的值插入所有这些领域的(一些步骤已经为简单起见,省略):

$sql_thread = "INSERT INTO thread (title, content) 
      VALUES ('some title', 'some content')"; 

    # this is normally a loop, as there are more than one tags: 
    $sql_tags = "INSERT INTO tag (name) 
       VALUES ('onetag')"; 


    # normally I would check the return value 
    mysqli_query($link, $sql_thread); 

    # get the thread id: 
    $thread_id = mysqli_insert_id($link); 

    mysqli_query($link, $sql_tags); 

    # get the tag id: 
    $tag_id = mysqli_insert_id($link); 

    # insert into thread_tags: 
    mysqli_query($link, "INSERT INTO thread_tags (thread_id, tag_id) VALUES ($thread_id, $tag_id)"); 

    # insert into author_threads, I already know author_id: 
    mysqli_query($link, "INSERT INTO author_threads (author_id, thread_id) VALUES ($author_id, $thread_id)") 

我想确保所有这些都发生或者不会发生(即创建线程的过程)。我如何编码以使用交易?或者以其他方式确保所有这些都会发生?

回答