来自SELECT Join的UPDATE查询

时间:2014-08-25 11:37:52

标签: php mysql join inner-join

我知道这可能很简单,我只是遗漏了一些东西,但我似乎无法解决这个问题。

我无法在UPDATE语句中获取变量。如果我输入user_id它就会起作用,所以我不会将变量关闭。

$query = "SELECT accounts.username, email_activate.email, accounts.user_id FROM accounts INNER JOIN email_activate ON accounts.user_id = email_activate.user_id WHERE dt_welcome = '0000-00-00 00:00:00' AND dt_start <= DATE_SUB(NOW(), INTERVAL 3 DAY)";
$result = mysql_query($query) or die(mysql_error());
while ($row = mysql_fetch_array($result)) {


$message =  "Hello <b>".$row['username']."</b>, <br/><br/>";

$to = "".$row['email']."";

$result2 = mysql_query("UPDATE email_activate SET dt_welcome = NOW() WHERE user_id = ".$row['user_id']." ");

[other mail stuff .....]

}

同样,我知道它可能很简单。

谢谢!

1 个答案:

答案 0 :(得分:1)

为什么在一个查询中可以使用两个查询和一个循环?

UPDATE email_active ea JOIN
       accounta a
       ON a.user_id = ea.user_id
    SET dt_welcome = NOW()
WHERE dt_welcome = '0000-00-00 00:00:00' AND
      dt_start <= DATE_SUB(NOW(), INTERVAL 3 DAY);

编辑:

您的查询的问题是您需要围绕用户ID的单引号:

UPDATE email_activate
    SET dt_welcome = NOW()
    WHERE user_id = '".$row['user_id']."' "

当然,您应该使用mysqli_或PDO并具有参数化查询。后者会阻止你首先遇到这个问题。