[英]Update SQL database table from PHP array values using foreach()
我正在嘗試使用foreach()從PHP數組更新SQL表。 我注意到只有最后一個數組值被寫入所有表字段。 我在這里瀏覽了許多示例,但沒有一個示例可以解決。 例如( 來自PHP數組和其他一些數組的簡單更新sql表 ),這里是數組$ product_qttys: Array ( [qty0] => 1 [qty1] => 4 [qty2] => 2 [qty3] => 3 [qty4] => 6 )
這是代碼:
foreach ($product_qttys as $key => $pr_qtys){
$qttys = mysqli_real_escape_string($con, $pr_qtys);
// print_r ($qttys);
$sql = "UPDATE table-a SET qty = '$qttys' WHERE ip_add = '$ip'";
$result = mysqli_query($con,$sql);
}
echo "<br/>check SQL table<br/>";
$sqla = "SELECT * FROM table-a WHERE ip_add='$ip'";
$querya = mysqli_query($con,$sqla);
if (mysqli_num_rows($querya) > 0) {
while ($producta = mysqli_fetch_assoc($querya)) {
echo ("item_qty=" . ($item_qty = $producta ['qty']) . "<br/>");
}
}
這是我得到的輸出:
check SQL table
item_qty=6
item_qty=6
item_qty=6
item_qty=6
item_qty=6
PhpMyAdmin表也顯示相同。 我錯過了什么還是做錯了什么? 欣賞您的反饋/輸入並希望將其關閉。 謝謝。
您正在values數組中執行foreach並傳遞相同的ip,所以where永遠說要更改同一元素。
它將其余的代碼放在錯誤的地方,我將幫助糾正它。
但是您必須執行類似的操作。
$product_qttys = Array ( ["127.0.0.1"] => 1 ["127.0.0.1"] => 4 ["127.0.0.1"] => 2 ["127.0.0.1"] => 3 ["127.0.0.1"] => 6);
foreach ($product_qttys as $key => $pr_qtys){
$qttys = mysqli_real_escape_string($con, $pr_qtys);
$sql = "UPDATE table-a SET qty = '$qttys' WHERE ip_add = '$key'";
$result = mysqli_query($con,$sql);
}
echo "<br/>check SQL table<br/>";
$sqla = "SELECT * FROM table-a WHERE ip_add='$key'";
$querya = mysqli_query($con,$sqla);
if (mysqli_num_rows($querya) > 0){
while ($producta = mysqli_fetch_assoc($querya)){
echo ("item_qty=" . ($item_qty = $producta ['qty']) . "<br/>");
}
}
也改善邏輯
您將'qty'列設置為5次不同的編號,因此當第一個循環通過時,一旦將'qty'列設置為1,然后向前移動,它將把最后一個數字重寫為新數字。 您不能在同一列和同一行中保存不同的數字,因此如果$ip = 127.0.0.1
那么您將重寫ip行中所有具有127.0.0.1的行。 也許像$sql = "UPDATE table-a SET $key = '$qttys' WHERE ip_add = '$ip'";
可以解決問題,但是尚未經過測試,因此可能無法正常工作。 如果該語句正確,那么您需要將所有數組鍵作為不同的列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.