MYSQL查询优化
我遇到的问题我会尽我所能描述它....用户选择三个选项,图像出现在屏幕上,并且他们所做的选择被发送并存储在数据库中,下面的PHP函数找到选择的图像,并将它们作为变量返回,因此在刷新页面后,它们所做的最新选择和与选择对应的图像仍显示在占位符中,下面我想要的SQL代码合并到一个查询中,但我需要它,所以在$ driver1的数据被发现时,它被放置到$ image1变量中,并且$ driver2与$ image2相同,$ driver3到$ img3,所以我可以将它们返回到页面,在正确的占位符中回显正确的图像。他们所做选择的图像需要显示在原来出现的占位符中。它现在可以正常工作,但我确信SQL查询可以缩短为一个?以节省代码行。MYSQL查询优化
我在下面发布的代码是主要的重要部分,所以您可以希望了解我在问什么。
任何帮助将是伟大的,谢谢。
//HTML CODE
<?php
list($img1, $img2, $img3) = checkteam();
?>
<img onclick="return removedriver1(this)" id="advert" src="images/delete.gif" border="0"/>
<img id="placeholder1" src="<?php echo "$img1";?>" alt="" />
<img onclick="return removedriver2(this)" id="advert src="images/delete.gif" border="0"/>
<img id="placeholder2" src="<?php echo "$img2";?>" alt="" />
<img onclick="return removedriver3(this)" id="advert" src="images/delete.gif" border="0"/>
<img id="placeholder3" src="<?php echo "$img3";?>" alt="" />
//PHP CODE
function checkteam(){
$sql="SELECT image FROM drivers WHERE drivers_id = '$driver1'";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);
$image1=$row[image];
$sql="SELECT image FROM drivers WHERE drivers_id = '$driver2'";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);
$image2=$row[image];
$sql="SELECT image FROM drivers WHERE drivers_id = '$driver3'";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);
$image3=$row[image];
return array ($image1, $image2, $image3);
}
你可以这样做只有一个查询:
$sql = "SELECT drivers_id id, image FROM drivers WHERE drivers_id in ($driver1, $driver2, $driver3)";
您将需要myqsl_fetch_array
三次,当然。
while ($row = mysql_fetch){
if ($driver1 == $row['id'])
$image1 = $row['image'];
else if ($driver2 == $row['id'])
$image2 = $row['image'];
else if ($driver3 == $row['id'])
$image3 = $row['image'];
}
select drivers_id, image from drivers where drivers_id in ($driver1, $driver2, $driver3)
或
select drivers_id, image from drivers where drivers_id = $driver1 or drivers_id = $driver2 or drivers_id = $driver3
遍历结果和匹配drivers_id呼应在正确的占位符正确的图像。
在我看来,要做到这一点,最好的办法是将它们全部粘成一个关联数组:
$sql = "SELECT drivers_id, image FROM drivers WHERE drivers_id IN ($driver1, $driver2, $driver3)";
$result = mysql_query($sql);
$images = array();
while (($row = mysql_fetch_assoc($result)) {
$images[$row["drivers_id"]] = $row["image"];
}
您可以再与$图像打印出相应的图像[$驱动1]等
所以我可以使用$ images [$ driver1]引用数组?它会回显为$ driver1变量检索的数据?这是如何工作的?对不起,成为一个害虫。 – Ali
我保证我没有试图居高临下,但数组是PHP中的一个非常基本的概念(以及一般编程)。如果你不明白它们是如何工作的,你应该找到一个介绍性的教程,其中介绍了在试图开展一个真正的项目之前的事情,否则这将是一场艰苦的战斗。 –
哈哈不,我知道数组是如何工作的,但是我认为你在什么地方试图告诉我不同的东西,你向我解释的东西是行不通的,因为值总是会改变的,所以当它们以$ images [4],$图片[7],$图片[5],我可以将它们放置在页面上,但是当有人在那里选择时会发生什么?它将不再是相同的,因为他们可以做出24个不同的选择,并且可以在任何时候重新进入那里选择。 – Ali
所以,即使我三次执行mysql_fetch_array,我如何确保$ driver1的数据放入$ image1?因为我已经用你所说的查询尝试了它,但是它按照找到匹配的顺序检索数据。谢谢 – Ali
@ user888697我刚刚编辑答案。 –
非常感谢!工作的魅力,感谢您的时间! – Ali