簡體   English   中英

使用PHP更新MySql中的多行

[英]Update multiple rows in MySql using PHP

我有讀取解析的xml(外部)的腳本:

<?php
//mysql connection
$con2 = mysql_connect("localhost","username","password");
if (!$con2)
  {
  die('Could not connect: ' . mysql_error());
  }

$selectdb = mysql_select_db("test_db", $con2);
if (!$selectdb)
  {
 die('Database not used: ; ' . mysql_error());
  }

//simplexml load xml file
   $jackpots =  simplexml_load_file('https://www.123.com/xmldata.xml');

//loop through parsed xmlfeed and print output
      foreach ($jackpots->jackpot as $jackpot) {

                     foreach ($jackpots->jackpot as $jackpot) {
                     printf("gameId: %s\n", $jackpot->gameId);
                     printf("gameName: %s\n", $jackpot->gameName);
                     printf("amount: %s\n", $jackpot->amount);
                     printf("currency: %s\n", $jackpot->currency);
//insert into databse
foreach ($jackpots->gameId as $jackpot) {
                               mysql_query("UPDATE my_table SET amount=$jackpot->amount")
                               or die(mysql_error());}
//show updated records
            printf ("Records inserted: %d\n", mysql_affected_rows());
            }
        }
//close connection
 mysql_close($con2);

?>

顯然,數據庫中有一個表(my_table),其中包含所有列(gameId,gameName,金額和貨幣)。

我需要為每個“ gameId”列更新“金額”列。 當我在下面運行腳本時,得到了更新,但所有“金額”都相同。 請給我一些支持嗎? 我的錯誤在哪里?

提前致謝!

您必須在查詢中包括gameId!

像這樣:

mysql_query("UPDATE my_table SET amount=$jackpot->amount WHERE gameId = '".$jackpot->gameId."'")

但是,當您像這樣在查詢中插入硬編碼的變量時,請務必小心。 您應該在避免SQL注入漏洞之前對變量進行轉義。 研究諸如Code Igniter,Zend或Laravel之類的PHP框架可能對您有所幫助,以幫助您完成這些任務中的一些基本功能。

您需要一個where語句來定位特定行,該語句每次在循環中都會更新整個表,這就是為什么您獲得相同數量(循環中的最后一個數量)的原因

mysql_query(“ UPDATE my_table SET amount = $ jackpot-> amount WHERE gameId = $ jackpot-> gameId);

暫無
暫無

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

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