【问题标题】:minimize select queries on the same table Mysql最小化同一张表Mysql上的选择查询
【发布时间】:2012-06-01 17:03:26
【问题描述】:

我一直在试图弄清楚如何将这些 php-mysql 查询减少到最低限度。我想写成一个查询来获取所有数据。


$db_u = mysql_fetch_array(mysql_query("SELECT * FROM u_settings WHERE setting='username'"));
$db_p = mysql_fetch_array(mysql_query("SELECT * FROM u_settings WHERE setting='password'"));
$db_e = mysql_fetch_array(mysql_query("SELECT * FROM u_settings WHERE setting='email'"));
$db_t = mysql_fetch_array(mysql_query("SELECT * FROM u_settings WHERE setting='tag'"));
$db_a = mysql_fetch_array(mysql_query("SELECT * FROM u_settings WHERE setting='active'"));
$db_v = mysql_fetch_array(mysql_query("SELECT * FROM u_settings WHERE setting='version'"));
$db_ti = mysql_fetch_array(mysql_query("SELECT * FROM u_settings WHERE setting='time'"));
$db_wa = mysql_fetch_array(mysql_query("SELECT * FROM u_settings WHERE setting='warn'"));
$data_dis = mysql_fetch_array(mysql_query("SELECT * FROM u_settings WHERE setting='dis'"));

执行上述操作有点让 Ram 陷入困境。任何帮助表示赞赏。

检查了其他不符合要求的问题。

【问题讨论】:

  • 你的 bot_settings 表是什么样子的?
  • 基本上我只想从我指定的设置列参数/值对应的行中获取信息。没有其他列。

标签: php mysql database select


【解决方案1】:

尝试IN,而不是这么多查询

 SELECT * FROM u_settings WHERE setting IN ('username', 'password','email','tag','active','version','time','warn','dis');

【讨论】:

  • 那么访问数组会怎样?假设我把它全部放在一个变量中。[code]$db_selected=SELECT * FROM u_settings WHERE setting IN ('username', 'password','email','tag','active','version','time','warn','dis');我将如何访问数组中的各个变量? $db_selected['username'] ?
  • 你说的是哪个数组?
  • 我会将查询的结果存储在一个数组中,不会。能够将它们分配给其他变量或回显它们。
  • 因为你可以为每个插入的列分配一个变量
  • 为此,您必须将查询分配给 $query ='SElect ....' 之类的变量;然后 $result = mysql_query($query); $row = mysql_fetch_array($result); echo $row['username'];
【解决方案2】:

是的,编写一个没有 WHERE 子句的 SELECT 查询。这将从表中获取所有信息。

【讨论】:

    【解决方案3】:

    如果你想保留每个变量,你可以创建一个数组并这样做。

    $keys = array(
    'db_u' => 'username',
    'db_p' => 'password',
    'db_t' => 'tag'
    );
    
    foreach($keys as $key => $value) {
        &$keys[$key] = mysql_fetch_array(mysql_query("SELECT * FROM u_settings WHERE setting='{$value}'"));
    }
    

    我没有检查代码,但我想你明白了。它将每个结果存储在一个数组中。

    可能有更简单的方法来做到这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多