2015-10-19 67 views
-2

我有提醒表与此类似:更新列取决于电流值

|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函数作为参数。单个查询是否可能,以及如何?如果不是,那么最好的办法是什么?

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

+2

你必须'SELECT id,event_id,提示FROM your_table',将所有内容加载到php(可能是数组),然后调用你的函数为每个元素,然后发送你的更新回去做mysql –

回答

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'] . ";"); 
} 

沿着这些线的东西。

+0

好的,谢谢!我会按你说的去做,但我只是想知道是否有另一种方式。 – savicmi

+0

就像我说过的,如果你的函数可以把它的输出复制为一个SQL函数,那么这是可能的。相反,也许这将是一个更为恰当的问题。如果您发布了PhP功能,则可以确定它是否可以转换。 – CollinD