繁体   English   中英

我过度查询我的MySql数据库。 另一种检索许多数据的方法?

[英]I'm over-querying my MySql database. Another way to retrieve many data?

我有这个表结构,我正在检索具有许多查询的数据。

这是我如何查询数据库。

$siteurl = mysql_query("SELECT option_value FROM main_conf WHERE option_name = 'siteurl' ");
$_siteurl = mysql_result($siteurl,0);


$staticurl = mysql_query("SELECT option_value FROM main_conf WHERE option_name = 'staticurl' ");
$staticurl = mysql_result($staticurl,0);


$sitetitle = mysql_query("SELECT option_value FROM main_conf WHERE option_name = 'sitetitle' ");
$_sitetitle = mysql_result($sitetitle,0);


$sitesubtitle = mysql_query("SELECT option_value FROM main_conf WHERE option_name = 'sitesubtitle' ");
$_sitesubtitle = mysql_result($sitesubtitle,0);

$logofile = mysql_query("SELECT option_value FROM main_conf WHERE option_name = 'logofile' ");
$_logofile = mysql_result($logofile,0);

$cat1 = mysql_query("SELECT option_value FROM main_conf WHERE option_name = 'cat1' ");
$_cat1 = mysql_result($cat1,0);

$cat2 = mysql_query("SELECT option_value FROM main_conf WHERE option_name = 'cat2' ");
$_cat2 = mysql_result($cat2,0);

echo $_siteurl;

echo $_staticurl;

echo $_sitetitle;

echo $_sitesubtitle;

echo $_logofile;

echo $_cat1;

echo $_cat2;

还有另一种方法吗?

谢谢!

您可能会发现在一行中获取结果最简单。 您可以使用聚合在SQL中执行此操作:

SELECT max(case when option_name = 'siteurl' then option_value end) as siteurl,
       max(case when option_name = 'sitetitle' then option_value end) as sitetitle,
       max(case when option_name = 'sitesubtitle' then option_value end) as sitesubtitle,
       max(case when option_name = 'logofile' then option_value end) as logofile,
       max(case when option_name = 'cat1' then option_value end) as cat1,
       max(case when option_name = 'cat2' then option_value end) as cat2
FROM main_conf
WHERE option_name in ('siteurl', 'sitetitle', 'sitesubtitle', 'logofile', 'cat1', 'cat2');

结果将是一行,包含六列,每列一个。

戈登,我做了功课。 :d

..这是完整的代码。

<?php

SELECT max(case when option_name = 'siteurl' then option_value end) as siteurl,
       max(case when option_name = 'sitetitle' then option_value end) as sitetitle,
       max(case when option_name = 'sitesubtitle' then option_value end) as sitesubtitle,
       max(case when option_name = 'logofile' then option_value end) as logofile,
       max(case when option_name = 'cat1' then option_value end) as cat1,
       max(case when option_name = 'cat2' then option_value end) as cat2
FROM main_conf
WHERE option_name in ('siteurl', 'sitetitle', 'sitesubtitle', 'logofile', 'cat1',    'cat2');

//this is my homework, the php part of the problem

$siteurl = mysql_result($query_from_main_conf, 0, 0);
$staticurl = mysql_result($query_from_main_conf, 0, 1);
$sitetitle = mysql_result($query_from_main_conf, 0, 2);
$sitesubtitle = mysql_result($query_from_main_conf, 0, 3);
$logofile = mysql_result($query_from_main_conf, 0, 4);
$cat1 = mysql_result($query_from_main_conf, 0, 5);
$cat2 = mysql_result($query_from_main_conf, 0, 6);

?>

然后,我使用ECHO检索了内容。

<?php echo $cat1; ?>

谢谢!!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM