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