如何只为这样的事情做一个查询

时间:2014-02-07 22:20:59

标签: php mysql optimization

我正在努力有效地处理这个

mysql_query("UPDATE settings SET value = '" . time() . "' WHERE setting='roundtime'");
mysql_query("UPDATE settings SET value = '" . $curusers . "' WHERE setting='currentusers'");
mysql_query("UPDATE settings SET value = '" . $settingNum. "' WHERE setting='settingNum'");

我一直在使用INNER JOIN和其他东西用于select,但我不知道如何在这个结构中使用UPDATE。

1 个答案:

答案 0 :(得分:3)

您可以按如下方式编写查询:

UPDATE settings
    set value = (case when setting = 'currentusers' then '" . $curusers . "'
                      when setting = 'roundtime' then '" . time() . "' 
                      when setting = 'settingNum' then '" . $settingNum. "'
                 end)
    where setting in ('roundtime', 'currentusers', 'settingNum');

有几个问题。对于不推荐使用mysql_函数并且您应该使用参数的事实进行着色,还存在SQL问题。您在value中存储了不同类型的数据 - 时间加上其他两种数据。这似乎不是一个好的数据库设计。是否有理由说这些不是表中的列?