何年もの間私を狂わせてきたこの問題を誰かが助けてくれることを願っています. 私はmysql/phpを初めて使用します。
Books テーブルの BookID を参照する一連の数字で構成される配列 [$Booklist] があります。次に、データベースにクエリを実行して、各 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 クエリを実行することに問題がありますか??? - それに固執する方が簡単ですか?
ありがとう!