Php 我可以在循环中重用while语句条件而不破坏它吗?

Php 我可以在循环中重用while语句条件而不破坏它吗?,php,pdo,while-loop,Php,Pdo,While Loop,例如,我想: $stmt = $dbh->prepare("SELECT * FROM `1_cart_items` WHERE `cart_id`=?"); $stmt->bindValue(1,$cartid,PDO::PARAM_INT); $stmt->execute(); while ($r=$stmt->fetchAll(PDO::FETCH_ASSOC)) { $stmt = $dbh->prepare("INSERT INTO `ne

例如,我想:

$stmt = $dbh->prepare("SELECT * FROM `1_cart_items` WHERE `cart_id`=?");
$stmt->bindValue(1,$cartid,PDO::PARAM_INT);
$stmt->execute();
while ($r=$stmt->fetchAll(PDO::FETCH_ASSOC)) 
  {
     $stmt = $dbh->prepare("INSERT INTO `new` (`field1`,`field2`) VALUES(`value1`,`value2`)");
     $stmt->bindValue(1,$r['value1'], PDO::PARAM_STR);
     $stmt->bindValue(2,$r['value2'], PDO::PARAM_STR);
     $stmt->execute();
  }
我会覆盖$stmt变量吗?还是会这样?
如果没有,那么将为其生成一个新变量,并且在关闭连接后也将取消该变量的设置?

循环的目的是什么?看起来您正在选择一行。我习惯于在临时表中获取行并将其带到完整表中,然后再删除它。fetchAll应该获取所有行。首先,看起来您获取的行并不多,除非您有许多具有相同id的购物车项目。其次,您可能不需要编写代码来实现这一点,因为MySql有。要回答您的问题,是的,您将覆盖您的变量。如果不添加新的作用域,您将覆盖$stmt变量。