簡體   English   中英

PHP foreach 循環並將值添加到 mysql 表

[英]PHP foreach loop and add values to mysql table

我有一個數組($array),它的結構如下:

[auctions] 
       (         
         [0] 
              ( 

                [item]
                        (
                           [id] => 45422
                        )

                [quantity] => 22
                [buyout] => 40
                [bid] => 25
              )

           [1] 
              ( 
                [item]
                         (
                           [id] => 24555
                         )

                [quantity] => 85
                [buyout] =>120
                [bid] => 58
              )

           [2]
         ....

我想將其中一些值存儲在 mysql 表中。 另外我想要一個時間戳,如果item->id已經存在於我的表中(作為主鍵),其他值應該被更新。

[item] -> [id]
[quantity]
[buyout] 
TIMESTAMP

我是這樣試的:

 foreach ($array['auctions'] as $auctiondata) {

 $sql ="INSERT INTO `blackrock` (`item_id`, `actual_prices`, `actual_quantity`, `last_update`) VALUES ('". $auctiondata['item']['id']."', '". $auctiondata['buyout']."', '". $auctiondata['quantity']."', 'CURRENT_TIMESTAMP')
   ON DUPLICATE KEY UPDATE item_id='". $auctiondata['item']['id']."', '". $auctiondata['buyout']."', '". $auctiondata['quantity']."'";

 }

建議你先google "php mysql insert"有一些參考你

如果您在密鑰重復時更新 id 沒有任何意義我認為如果沒有任何操作,您可以使用 REPLACE INTO 而不是 ON DUPLICATE KEY UPDATE。

請注意,在創建具有相同 id 和更新數據的新行之前,舊行將被刪除

此外,花括號可以很好地替代連接 PHP 被迫與每個 '.' 重新連接。 接線員,慢。

w3schools.com - PHP MySQL 插入數據

PHP 手冊 - mysqli 類

MySQL 8.0 參考手冊 - REPLACE 語句

<?php

$conn = new mysqli("localhost", "ur_db_username", "ur_db_password", "ur_schema");

if ($conn->connect_error) {
    //
}

foreach ($array['auctions'] as $auctiondata) { {    

    //`actual_prices` = $auctiondata['buyout'] according to your code provided
    //it is no meaning if you update the id when the key duplicated
    //i think you can use REPLACE instead of ON DUPLICATE KEY UPDATE

    $sql = "REPLACE INTO `blackrock` 
                    (`item_id`, `actual_prices`, `actual_quantity`, `last_update`) 
                VALUES 
                    ('{$auctiondata['item']['id']}', '{$auctiondata['buyout']}', '{$auctiondata['quantity']}', NOW())";

    if ($conn->query($sql) === TRUE) {
        //
    } else {
        //
    }
}

$conn->close();
?>

上面如果代碼主要是從我提供的站點復制過來的 需要實現錯誤處理

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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