希望有人可以幫助解決這個問題,這已經讓我瘋狂了很多年。我很新的MySQL/PHP。來自內部的多個mysql查詢for循環
我有一個數組[$ 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++;
}
但它意味着$書目任何重複的$標題,$作者等均未反映,所以我報廢了。
我的問題是 - 是否有更好的解決方案,以查詢循環內的mysql查詢?或者,從for循環運行多個mysql查詢有問題嗎? - 堅持這一點更簡單嗎?
謝謝!
[請不要使用mysql_ *函數。](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-function-in-php) –
好點,謝謝。 – animal
看看我的答案。我認爲這是你需要的 –