簡體   English   中英

PHP 代碼插入/更新/刪除 SQL 數據庫中的條目

[英]PHP code to Insert / Update / Delete entries in a SQL database

我有兩個數據庫,一個非常大(5 GB),一個較小的數據庫更新為 PHP 作為 cron 作業運行以從大數據庫中提取必要的數據。

到目前為止,我已經能夠從大數據庫中提取數據並將其插入到小數據庫中(如果該行尚不存在)。

這是數據庫行的樣子:

123456 TeamA-TeamB 1.14 4.30 7.60
(id, eventname, odds1, oddsX, odds2)

PHP 需要 a) 檢查該行是否存在,b1) 如果它不存在則添加它,b2) 如果它存在檢查值 odds1、oddsX 和 odds2 是否不同,c) 如果它們不同,更新值。

這是執行 a) 和 b1) 的代碼:

$SQL_INSERT="INSERT IGNORE INTO oddsnavi_baby.calc (id, eventname, odds1, oddsX, odds2) VALUES ('$eventid', '$eventname', '$odds1', '$oddsX', '$odds2')";
mysql_db_query($database_baby, $SQL_INSERT) or die("Failed Query of " . $SQL_INSERT);

如果 odds1、oddsX 或 odds2 的現有值與打算寫入數據庫的值不同,我如何更改此部分以更新行? 如果任何值不同,也可以更新該行,因為前兩個無論如何都不會改變。

$SQL_INSERT="INSERT IGNORE INTO oddsnavi_baby.calc (id, eventname, odds1, oddsX, odds2) VALUES ('$eventid', '$eventname', '$odds1', '$oddsX', '$odds2')";
$SQL_UPDATE="update oddsnavi_baby.calc set odds1=\"$odds1\",oddsX=\"$oddsX\",odds2=\"$odds2\" where id=\"$eventid\");
$query="select * from oddsnavi_baby.calc where id=\"$eventid\"";
$process=mysql_query($query);
if(mysql_num_rows($process))       
        mysql_db_query($SQL_UPDATE);
else
        mysql_db_query($database_baby, $SQL_INSERT) or die("Failed Query of " . $SQL_INSERT);

在這種情況下,如果行數據沒有變化,則存在冗余,那么它也將是更新,這將是一種開銷。 檢查值可以減少它

嘗試:

REPLACE INTO 

而不是 INSERT IGNORE INTO。

文檔在這里: http://dev.mysql.com/doc/refman/5.0/en/replace.html

暫無
暫無

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

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