2013-09-30 40 views
0
foreach($chk as $key=>$invoiceno) 
{ 
    $QryUp = mysql_query("update `tbl1` set `paid` = 'y' where `invoice_no`='".$invoiceno."' and `uniquekey`='".$_SESSION['uniquekey']."'") or die(mysql_error()); 
    $id=mysql_affected_rows(); 

//insert data into tbl_school_account 
$QryIns=mysql_query("insert into `tbl2` (`type`, `ref_id`) values('d', '$id')"); 
} 

這裏$id返回相同的值。
exa:當這個循環工作時,它更新tbl1 table.their id是1和2.it更新完美。但mysql_affected_rows只返回1(兩次)。mysql_affected_rows在foreach循環中沒有給出想要的結果

那麼問題在哪裏?

我知道關於已棄用的功能

+1

我認爲相應表的數據庫值應該已經是「y」。因此,沒有值正在更新,因此,mysql_affected_rows()不會返回1. – Pupil

+0

表中還有其他字段,並且update正常工作,所有值都會更新。 – DS9

回答

1

mysql_affected_rows調用返回受影響的行的號碼,而不是受影響的行的PK。您將不得不使用發票ID等運行SELECT以獲取您需要的信息。

+0

表示它與'mysql_insert_id'不相似? – DS9

+0

否。它返回前一個查詢修改了多少行。如果你想要編輯哪些,你必須按照你在UPDATE中使用的相同標準進行選擇。 – slugonamission

+0

ok ..我在這裏查詢,但在這裏查詢更新兩行,然後爲什麼它只返回一個? – DS9

1

你要這個功能,而不是affected_rows的:

http://php.net/manual/en/function.mysql-insert-id.php

「檢索先前查詢(通常是INSERT)的AUTO_INCREMENT列生成的ID。」

+0

我更新了表,所以'mysql_insert_id'沒有幫助。 – DS9

+0

從MySQL手冊中,mysql_insert_id僅在'INSERT'上更新,或者當'INSERT'或'UPDATE'用於使用'LAST_INSERT_ID(expr)'設置列值時。 – slugonamission

+0

哦,我錯過了,在這種情況下,我認爲slugonamission是正確的,你將不得不自己看看他們。 – martijnve