0

我被困在一个简单的 MYSQL UPDATE 语句上;从数据库中选择一个 ID,然后更新一条记录 WHERE ID = $ID。代码:

$searchDates = ('SELECT * FROM booking_event WHERE subject != "Closed" AND is_reminded IS NULL AND DATE_ADD(NOW(), INTERVAL 2 DAY) >= `starting_date_time` AND NOW() <= `starting_date_time`'); 

$result = mysql_query($searchDates) or die (mysql_error());

while ($row = mysql_fetch_array($result)) {
  $id = $row['event_id'];

mysql_query("UPDATE booking_event SET is_reminded = 1 WHERE event_id = '$id'") or die (mysql_error()); 

}

出于某种原因,它不会使用从数据库中选择的 ID 进行更新 - 我尝试使用 testID 变量并且它工作正常。

任何帮助将不胜感激谢谢!

4

2 回答 2

2

您可以在一个查询中执行此操作,如下所示:

UPDATE booking_event b1
INNER JOIN
(
    SELECT * 
    FROM booking_event 
    WHERE subject != "Closed" 
      AND is_reminded IS NULL 
      AND DATE_ADD(NOW(), INTERVAL 2 DAY) >= starting_date_time 
      AND NOW() <= starting_date_time
) b2
SET t1.is_reminded = 1 WHERE b1.event_id = b2.event_id
于 2012-12-06T11:45:20.857 回答
1

PHP 变量区分大小写。很可能您在 MYSQL 中的列名将类似于Event_Id或任何其他大小写。UsingSELECT *将返回实际名称,因此要获取它,您需要$id = $row['Event_Id'];

最好确保您没有外壳问题,请使用:

SELECT event_id FROM ....

然后$id = $row['event_id'];会工作。

于 2012-12-06T11:47:40.623 回答