2012-07-11 22 views
0

我想使用以下脚本插入多条记录。但是,只有第一个被插入。之后,它会停止而不显示任何错误。这些准备好的语句执行有什么问题?在For循环中准备插入语句仅适用于第一次迭代..(PHP)

//$dbc = database connection //shortan here 
// $mid[] = {1,2,3,4}; //sortened here. 

$q5 = "INSERT INTO user_book_trn(user_id, member_id, book_id, date_read, lang_id) VALUES (?, ?, ?, now(), ?)"; 

$s5 = mysqli_prepare($dbc, $q5); 
//Bind the variables: 
mysqli_stmt_bind_param($s5, 'iiii', $user_id, $member_id, $book_id, $lang_id); 

foreach($mid as $mk => $mv) { //check for each selected check box value from member list: 

    $q2 = "SELECT user_id, member_id, book_id FROM user_book_trn WHERE user_id = {$_SESSION['myuser']['userid']} and member_id = {$mv} and book_id= {$w}"; 

    $r3 = mysqli_query($dbc, $q2); 

    if (mysqli_num_rows($r3) == 0) { //title is available for this user. 

     //Assign the values to variables: 
     $user_id = (int)$_SESSION['myuser']['userid']; 
     $member_id = (int)$mv; 
     $book_id = (int)$w; 
     $lang_id = (int)$_SESSION['lid']; 

     //just to check each iteration gets new values: 
     echo "user_id : $user_id \n"; 
     echo "member_id : $member_id \n"; 
     echo "book_id : $book_id \n"; 

     //Execute the query: 
     mysqli_stmt_execute($s5); 
     if (mysqli_affected_rows($dbc) == 1) { 
      //this runs ok just for the first iteration.. Why? 

      echo "<p><b> The book $t is added. </b></p>"; 
      $_SESSION['bookid'] = $book_id; 
     } 
    } 
} 
+1

'的var_dump($ MID)' – 2012-07-11 18:59:21

+0

地方,为什么这个的var_dump($中旬) ?我为每次迭代打印member_id,只是为了确保它获得新的价值。 – 2012-07-11 19:02:22

+0

第二次运行'echo“user_id:$ user_id'或者它在那之前死了吗?你有3个开始护腕'{',但只有一个结束'}',我希望那是因为另一个2在部件之外你复制,如果没有添加2'}'看看是否有差异 – 2012-07-11 19:07:53

回答

0

不知道确切的细节,但据我所知准备的语句绑定到执行后的结果集。您需要重置第一

mysqli_stmt_reset($s); 

http://php.net/mysqli-stmt.reset

另外,你应该考虑使用有用变量名。因为你所提到的,你看不到任何错误:

mysqli_stmt_error_list($s5); 

http://php.net/mysqli-stmt.error-list

http://php.net/mysqli-stmt.errno

http://php.net/mysqli-stmt.error

+0

我加了mysqli_stmt_reset ($ s5)在$ _SESSION ['bookid'] = $ bookid之后;但是,没有成功.. – 2012-07-11 20:09:56

+0

也许'mysqli_affected_rows()'是'0'或'-1'(错误,参见手册)?提及的其他功能/方法? – KingCrunch 2012-07-11 20:29:19

+0

Wonderfulllll ......谢谢..那是什么问题..谢谢+1 – 2012-07-11 20:41:09

相关问题