2017-08-07 48 views
0

誰能解釋爲什麼下面的代碼,僅在MySQL數據庫中插入一行。 我檢查與回波函數陣列它返回兩行。PHP的MySQL bind_param插入單列只有

$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(); 
} 
+0

使表空的主ID for循環 – AAT

+0

的每次迭代之後的變量聲明'$第i = 1;'在外部的' foreach' – JYoThI

+0

對不完整的代碼,我已經聲明$ i = 0;在forreach之前。它只插入單行,即使我通過echo來檢查數組,它返回2行 –

回答

1

1:你需要在foreach外申報$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(); 
}