2014-03-01 71 views
0

我得到一個非常有趣的問題與我的代碼。基本上我第一次運行代碼時,我從mysqli_effected_rows()函數中得到了正確的結果。但第二次我運行相同的腳本它一直給我「-100」mysql_affected_rows()返回-100

如果我刪除表中的所有記錄並再次運行代碼,我從mysqli_effected_rows()函數得到正確的結果。

是「-100」的錯誤代碼?

$count =""; 

foreach($database as $key=>$value) { 

    foreach($value as $field => $cell){ 

    if ($field =='itemid') { 
     echo "the item id is $cell <br />"; 
     $col1 = $cell ; 
    } 
    elseif ($field =='title') { 

     echo "the title is $cell<br />"; 
     $col2 = $cell; 
    } 
    elseif ($field =='starttime') { 

     echo "the start time is $cell<br />"; 
     $col3 = $cell; 
    } 
    } 
    $dbquery = "INSERT INTO cordless_drill(itemid,title,starttime) VALUES ('$col1','$col2','$col3')"; 
mysqli_query($dbc,$dbquery); 

    $count += mysqli_affected_rows($dbc); 
} 
echo $count ; 
+1

可能是唯一的密鑰約束違規?你可以顯示你的'cordless_drill'表定義,包括鍵和約束請。 – StuartLC

+1

正確的數字應該是100嗎?如果查詢失敗,mysqli_affected_rows返回-1,所以如果有100個插入失敗,你將得到-100。大概你有一個主鍵,當你再次運行腳本時,它不允許你插入一個重複的行。 –

+0

如果數據庫有100行,每行返回-1,所以結果將是-100嘗試回顯查詢並查看它。 –

回答

0

link_identifier相關聯的最後INSERTUPDATEREPLACEDELETE查詢獲取受影響的行數。 MySQL連接。如果未指定鏈接標識符,則假定由mysql_connect()打開的最後一個鏈接。如果沒有找到這樣的鏈接,它將嘗試創建一個,就像調用mysql_connect()時沒有參數一樣。如果未找到或建立連接,則會生成一個E_WARNING level錯誤。返回成功時受影響的行數,如果最後一次查詢失敗,則返回-1。 在嘗試$count += mysqli_affected_rows($dbc);之前,只需嘗試回顯mysqli_affected_rows($dbc)的值......並檢查是否有任何警告發生......

相關問題