다음 스크립트를 사용하여 레코드 수를 삽입하고 싶습니다. 그러나 첫 번째 것만 삽입됩니다. 그 후에는 오류를 표시하지 않고 멈 춥니 다. 준비된 성명서 실행에 어떤 문제가 있습니까?for 루프에서 준비된 insert 문은 첫 번째 반복에서만 작동합니다 .. (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;
}
}
}
'위해서 var_dump ($ 중간)' –
이유를이 위해서 var_dump ($ 중간) ? 각 반복에 대해 member_id를 인쇄하여 새로운 가치를 얻고 있는지 확인합니다. –
'echo "user_id : $ user_id'를 두 번째로 실행합니까 아니면 그 전에 죽는가? 3 개의 시작 팔머'{', 단 하나의'}'만 남았습니다. 다른 2 개가 부분 외부에 있으면 만약 당신이 2 개의'''를 추가하지 않았다면 복사해서 어떤 차이가 있는지 확인하십시오. –