Php mysql\u受影响的\u行在foreach循环中未给出所需的结果

Php mysql\u受影响的\u行在foreach循环中未给出所需的结果,php,mysql,Php,Mysql,此处$id返回相同的值。 示例:当这个循环工作时,它更新tbl1table。它们的id是1和2。它更新完美。但是mysql\u受影响的行只返回1(两次) 那么问题出在哪里呢 我知道,不推荐的函数调用mysql\u impacted\u rows返回受影响的行数,而不是受影响行的主键。您必须使用发票ID等运行选择,以获取您似乎想要的信息。您想要此功能而不是受影响的行: “检索上一个查询(通常是INSERT)为自动增量列生成的ID。”我认为各个表的数据库值应该已经是“y”。因此,没有值正在更新,因

此处
$id
返回相同的值。
示例:当这个循环工作时,它更新
tbl1
table。它们的id是1和2。它更新完美。但是
mysql\u受影响的行
只返回1(两次)

那么问题出在哪里呢


我知道,不推荐的函数

调用
mysql\u impacted\u rows
返回受影响的行数,而不是受影响行的主键。您必须使用发票ID等运行
选择
,以获取您似乎想要的信息。

您想要此功能而不是受影响的行:


“检索上一个查询(通常是INSERT)为自动增量列生成的ID。”

我认为各个表的数据库值应该已经是“y”。因此,没有值正在更新,因此mysql\u impact\u rows()不会返回1。表中还有其他字段。如果更新正常,则所有值都会更新。这意味着它与
mysql\u insert\u id
不同。否。它返回被上一个查询修改的行数。如果你想编辑哪一行,你必须根据更新中使用的相同条件进行选择。好的..我理解TOD,但这里查询更新两行,那么为什么它只返回一行?啊,我判断错误。它是同时更新两行还是跨不同的查询更新?@DS9嗯……是的
mysql\u impact\u rows
返回上一次查询影响的行数。从mysql手册中,mysql\u insert\u id仅在
insert
上更新,或者当
insert
UPDATE
用于设置带有
LAST\u insert\u id(expr)
的列值时更新。哦,我错过了这一点,在这种情况下,我认为slugonamission是正确的,你必须自己查找它们。
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')");
}