根据当前值更新列

时间:2015-10-19 13:26:02

标签: php mysql

我的提醒表与此类似:

|id |event_id |reminder            |
|---|---------|--------------------|
|37 | 75      |2015-10-19 11:00:00 |
|38 | 75      |2015-10-22 10:45:00 |
|39 | 76      |2015-10-23 11:00:00 |
|40 | 76      |2015-10-24 11:30:00 |

id 上有一个主键。我需要更新提醒列,以便我获取其当前值,使用php函数进行一些转换并返回新值。因此,新值对于所有记录都不相同,但取决于其先前的值。

例如,这不起作用,但我喜欢这样的事情:

$sql = "UPDATE reminders r
        SET r.reminder = '". my_function("r.reminder") ."' ";

我的问题是如何获取提醒列的当前值并转发到php函数作为参数。是否可以使用单个查询,以及如何?如果没有,最好的方法是什么?

我希望我不必将更新语句放在循环中并单独更新每一行,但我不确定。

1 个答案:

答案 0 :(得分:0)

除非您可以在SQL中复制所需的函数,否则这不可能作为单个查询。最终,查询只是一个简单的字符串,无需PhP的任何进一步交互即可发送到数据库。

如果你必须在代码上运行PhP函数,你需要做这样的事情。

$qResult = $mysqli->query($sql);
$results = $qResult->fetch_all(MYSQLI_ASSOC);
foreach ($results as $result) {
  $mysqli->query("UPDATE myTable SET someColumn = someNewValue WHERE id = " . $result['id'] . ";");
}

这些方面的东西。