php - 如何只对这样的事情进行一次查询

标签 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 和其他东西来选择,但我不知道如何使用 UPDATE 来处理这个结构中的东西。

最佳答案

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

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 中存储不同类型的数据——一个时间加上其他两个。这似乎不是一个好的数据库设计。这些不是表中的列是否有原因?

关于php - 如何只对这样的事情进行一次查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21638854/

相关文章:

php - 使用不同的数据库表 ID 重复 div 宽度

php - 我可以创建一个不能在运行时动态添加属性的 PHP 类吗?

mysql - 如何/在何处从 MySql 删除/编辑索引以防止重复行

optimization - 如何从我的构建中排除不必要的 DLL?

ios - iOS 版 AIR : Power saving

c# - 为 LINQ 伪造 IGrouping

php - 如何在字段mysql中选择最后一个日期之前的最后n个月?

php - 这个 PHP 代码/hack 的目的是什么?

PHP PDO LIKE 语句不成功

mysql - SQL按间隔分组?