希望有人可以帮助解决这个让我疯狂多年的问题。我对 mysql/php 很陌生。
我有一个数组 [$Booklist],它由一系列数字组成,这些数字引用 Books 表中的 BookID。然后我查询数据库以获取与每个 ID 关联的详细信息:
for($s=0;$s<$smax+1;$s++){
$sql="SELECT * FROM Books WHERE BookID = '$Booklist[$s]' ";
$result=mysql_query($sql) or exit();
while($row = mysql_fetch_array($result))
{
$Title[$s]=$row['Title'];
$Author[$s]=$row['Author'];
$Publisher[$s]=$row['Publisher'];
$Year[$s]=$row['Year'];
}
}
这工作正常。但我从不喜欢从 php for 循环中运行多个查询。
重要的是,$Booklist 数组中允许重复的 BookID。并且必须保留 $Booklist 数组中 ID 的顺序(包含重复项),以便 $Title 和 $Author 数组的内容具有正确的顺序,包括重复项。希望这是有道理的!
我试过这样做:
$sql="SELECT * FROM Books WHERE BookID IN ('".join("','", $Booklist)."')
ORDER BY FIELD(BookID, '".join("','", $Booklist)."')";
$s=0;
while($row = mysql_fetch_array($result))
{
$Title[$s]=$row['Title'];
$Author[$s]=$row['Author'];
$Publisher[$s]=$row['Publisher'];
$Year[$s]=$row['Year'];
$s++;
}
但这意味着 $Booklist 中的任何重复项都没有反映在 $Title、$Author 等中,所以我将其废弃。
我的问题是——对于 for 循环中的 mysql 查询是否有更好的解决方案?或者,从 for 循环运行多个 mysql 查询是否有问题???- 坚持下去更简单吗?
谢谢!