[英]Update mysql database table with PHP
我的數據庫中有很多包含客戶信息的列,其中有些是重復的。 我需要根據IP地址(已知)更新表的“ sale”字段,但僅更新具有該IP地址的最新條目。
這是我的桌子:
|Sale | IP | Date |
+-----+-------------+----------+
|0 | 109.86.75.1 |2015-12-01|
|0 | 109.86.75.2 |2015-12-05|
|0 | 109.86.75.2 |2015-12-12|
|0 | 109.86.75.4 |2015-12-13|
假設我需要向ip = 109.86.75.2添加對客戶的更改,我需要在第三行中將Sale更改為1,因為有兩個具有此類IP的條目,但是第三行的時間是最新的。
更新后的表應如下所示:
|Sale | IP | Date |
+-----+-------------+----------+
|0 | 109.86.75.1 |2015-12-01|
|0 | 109.86.75.2 |2015-12-05|
|1 | 109.86.75.2 |2015-12-12|
|0 | 109.86.75.4 |2015-12-13|
我使用這樣的PHP代碼:
<?php
$servername=...;
$username=...;
$password=...;
$dbname=...;
$ipaddress="109.86.75.2";
$conn = new mysqli($servername, $username, $password, $dbname);
$sql="UPDATE MY_DATABASE_TABLE
SET Sale='1'
WHERE ip_address = '$ipaddress' AND //Don't know what to add here in where condition...
if ($conn->query($sql) === TRUE) {
echo "Record updated successfully";
}
else {
echo "Error updating record: " . $conn->error;
}
$conn->close();
?>
我在AND之后嘗試了此操作,但是它不起作用:
date IN (SELECT max(date) FROM MY_DATABASE_TABLE)";
“錯誤更新記錄:您無法在FROM子句中指定目標表'MY_DATABASE_TABLE'進行更新”
非常感謝您的幫助! 提前致謝!
您可以將UPDATE與LEFT JOIN一起使用:
UPDATE
MY_DATABASE_TABLE t1 LEFT JOIN MY_DATABASE_TABLE t2
ON t1.ip_address=t2.ip_address
AND t1.date<t2.date
SET
t1.Sale='1'
WHERE
t1.ip_address = '109.86.75.2'
AND t2.date IS NULL
如果連接不成功,則t2.date為NULL:該行是唯一具有該ip_address的行,或者是具有最大日期的行。
請看這里的小提琴。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.