2012-04-19 61 views
1

我有3个独立的MySQL查询下面列出,有没有结合他们这样我就可以得到输出相同,但只需一个电话到数据库(而不是3)的MySQL调用数据库减倍

由于任何方式提前

<?php 
$host = ''; 
$dbUser = ''; 
$dbPass = ''; 
$db = ''; 
mysql_connect("$host", "$dbUser", "$dbPass") or die(mysql_error()); 
mysql_select_db("$db") or die(mysql_error()); 

$result = mysql_query("SELECT id,cat,extra1,bigimage FROM pp_photos WHERE extra1 = '120' ORDER BY rand() LIMIT 1") or die(mysql_error()); 
while($row = mysql_fetch_array($result)) {  
print "<a href=\"http://www.\" target=\"_new\"> <img src=\"ng\" border=\"0\" ></a>"; 
} 
?> 
<?php 
$host = ''; 
$dbUser = ''; 
$dbPass = ''; 
$db = ''; 
mysql_connect("$host", "$dbUser", "$dbPass") or die(mysql_error()); 
mysql_select_db("$db") or die(mysql_error()); 

$result = mysql_query("SELECT id,cat,extra1,bigimage FROM pp_photos WHERE extra1 = 'W599_PTO' ORDER BY rand() LIMIT 1") or die(mysql_error()); 
while($row = mysql_fetch_array($result)) {  
print "<a href=\"php">[?]</FONT></a>"; 
} 
?> 
<?php 
$host = ''; 
$dbUser = ''; 
$dbPass = ''; 
$db = ''; 
mysql_connect("$host", "$dbUser", "$dbPass") or die(mysql_error()); 
mysql_select_db("$db") or die(mysql_error()); 

$result = mysql_query("SELECT id,cat,extra1,extra5,bigimage FROM pp_photos WHERE extra5 = '120rear' ORDER BY rand() LIMIT 1") or die(mysql_error()); 
while($row = mysql_fetch_array($result)) {  
print "<a href=\"09\" target=\"_new\"> <img src=\"http://pg\" border=\"0\" ert\"></a>"; 
} 
?> 

我现在编辑根据下面提供的帮助的代码...我是在MySQL的新手和我不能确定如何使任何或所有3个图像显示根据设置的过滤器“额外1”字段的值...

<?php 
$host = ''; 
$dbUser = ''; 
$dbPass = ''; 
$db = ''; 
mysql_connect("$host", "$dbUser", "$dbPass") or die(mysql_error()); 
mysql_select_db("$db") or die(mysql_error()); 

$result = mysql_query(" 
SELECT extra1 
FROM pp_photos 
WHERE extra1 IN('1','10','12') 
GROUP BY extra1") 
or die(mysql_error()); 
while($row = mysql_fetch_array($result)) {  
print "<a href=\"h3\" target=\"_new\"> images</a>"; 
} 
?> 
+3

首先你不需要每次的mysql_connect的。其次,你实际上并没有使用$ result的值。第三,'ORDER BY RAND()'速度非常慢。总而言之,你真的需要重新思考你想在这里实现的目标。 – 2012-04-19 12:17:27

回答

1

如何使用UNION

$query = " 
SELECT id,cat,extra1,bigimage FROM pp_photos WHERE extra1 = '120' ORDER BY rand() LIMIT 1 
UNION 
SELECT id,cat,extra1,bigimage FROM pp_photos WHERE extra1 = 'W599_PTO' ORDER BY rand() LIMIT 1 
UNION 
SELECT id,cat,extra1,bigimage FROM pp_photos WHERE extra1 = '120rear' ORDER BY rand() LIMIT 1 
"; 
$cats = array(
    '120'  => '503', 
    'W599_PTO' => '508', 
    '120rear' => '509' 
); 
$result = mysql_query($query) or die(mysql_error()); 
while($row = mysql_fetch_array($result)) {  
    print '<a href="http://www.nctfleetlist.co.uk/photos/search.php?keywords='. 
      $row['extra1'] . 
      '&cat=' . 
      $cats[$row['extra1']] . 
      '" target="_new"><img src="http://www.nctfleetlist.co.uk/images/camera.png" border="0" title="photos available"></a>'; 
} 
+0

原谅我的无知,但我的'打印'“一个href = somelink>图像”; }条件进入它? - 只有在数据库中匹配“extra1”或“extra5”的值时,我才希望MySQL显示图像 – 2012-04-19 18:16:31

+0

@JasonSneyd:请参阅我的编辑。 – Toto 2012-04-20 08:09:15

+0

谢谢,这很好!感谢你的帮助! – 2012-04-20 20:05:17

1
SELECT id,cat,extra1,bigimage 
FROM pp_photos 
WHERE extra1 IN('W599_PTO','120','120rear') 
GROUP BY extra1 

这会给你3行。您需要过滤根据某些条件得到3行所需的行,为了通过不需要

+0

感谢您的回复!虽然这有效,但它没有做它应该做的。基本上,如果有与W599_PTO相匹配的照片,则显示图像,'120和'120rear'也是如此 - 如果没有与任何照片匹配的照片,则不显示任何图像。用上面的答案,无论如何显示所有图像。谢谢 – 2012-04-19 12:25:38