php mysql绑定参数仅插入单行

php mysql绑定参数仅插入单行,php,mysql,Php,Mysql,有人能解释为什么下面的代码只在mysql数据库中插入一行吗。 我用echo函数检查数组,它返回两行 $counter=1; // just assume $orderid=date("mY").'-'.str_pad($counter, 4, '0', STR_PAD_LEFT); $stmt = $stmt_connect->prepare("INSERT INTO tblorder_detail(orderid,idno,productid,side,quantity,price,d

有人能解释为什么下面的代码只在mysql数据库中插入一行吗。 我用echo函数检查数组,它返回两行

$counter=1; // just assume
$orderid=date("mY").'-'.str_pad($counter, 4, '0', STR_PAD_LEFT);
 $stmt = $stmt_connect->prepare("INSERT INTO tblorder_detail(orderid,idno,productid,side,quantity,price,design,days,uploadtime,deliverytime,filecheck,isdelete) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
$i=0;
foreach ($saved_cart_items as $key => $value) { 
$i++;
$isdelete=0;   

$stmt->bind_param("siiiidiissii", $orderid, $i, $value['productid'], $value['side'], $value['quantity'], $value['price'], $value['design'], $value['days'], $value['uploadtime'], $value['deliveryid'], $value['filecheck'], $isdelete  );
$stmt->execute();
}
1:您需要申报$i=1;在外边。否则,第一次$i是未定义的。所以这是投掷错误。在下一个循环中,它将变为1,所以它只插入第二行

第二:您可以像下面那样绑定变量

$stmt = $stmt_connect->prepare("INSERT INTO tblorder_detail(orderid,idno,productid,side,quantity,price,design,days,uploadtime,deliverytime,filecheck,isdelete) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
$stmt->bind_param("siiiidiissii", $orderid, $i, $productid, $side, $quantity, $price, $design, $days, $uploadtime, $deliveryid, $filecheck, $isdelete  );
$i=1;
foreach ($saved_cart_items as $key => $value) { 
$i++;
$isdelete=0;   
$productid = $value['productid'];
$side=$value['side'];
$value['quantity'];
$price= $value['price'];
$design= $value['design'];
$days= $value['days'];
$uploadtime=$value['uploadtime'];
$deliveryid=$value['deliveryid'];
$filecheck=$value['filecheck'];


$stmt->execute();
}

每次循环后,将表的主id设为null,并声明$i=1;在foreach抱歉代码不完整,我已经声明$i=0;在forreach之前。它只插入一行,即使我通过echo检查数组,它返回的2行是表的主键orderid是主键,$orderid=datemY.'-'。str_pad$counter,4,'0',str_pad_左;