簡體   English   中英

使用foreach()從PHP數組值更新SQL數據庫表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM