[英]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.