簡體   English   中英

用PHP更新mysql數據庫表

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

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