質問: $db->prepare('SELECT * FROM img WHERE img_id=?'); $sqlimg->execute([$_REQUEST['id']]); foreach($sqlimg as $img){ $file='images/'.basename($_FILES['file']['name']); echo ''; } ``` この場合のbasename($_FILE['file']['name']); にある[file]と[name]は何になるのでしょうか? そもそもこの記述であっているのでしょうか? また、一覧ページでの1枚だけを掲載する方法のイメージが湧きません。 ### 疑問のまとめ 1、解釈はあっているでしょうか? 2、記述は近いものになっているでしょうか? 3、一覧ページで一枚だけを掲載する方法の参考はありますか? 以上となります。 イメージがさっぱり湧かず過程でたくさん疑問を投げかけてしまいました。 それぞれで質問を作ったほうがいいのかわからずこのような形になりました。 よろしくお願いいたします。
回答: > > 1、解釈はあっているでしょうか? > > > 合ってません。 $_FILESはそもそもformよりファイルが送信されたときに利用するものです。 既にサーバー上に存在するファイルなのであれば、素直にそのパスを指定すればいいだけです。 拡張子が決まっていて「yakiniku01」となるなら、あとは「フォルダパス+DBに保存している名前+拡張子」と連結させてimgタグに設定するだけです。 > > 2、記述は近いものになっているでしょうか? > > > プログラムは書いた通りにしか動きませんので「近い」というものはないと思ってください。 1、で回答した通り「なってません」。 それに詳細ページということは取得する情報は「特定のお店」にする必要がありますよね。 img_idで絞り込んでいるので、「特定の画像」になっています。 > > 3、一覧ページで一枚だけを掲載する方法の参考はありますか? > > > 「参考があるか」という問い方にはものすごく引っかかるのですが、 その「1枚だけ」をどのように特定するかによります。 ランダムなのか指定なのか、指定にしてもどのように指定されるのか。 要件を決めてください。 指定ならその指定の方法次第ではかなり簡単です。 ランダムでSQLだけとしたら結構工夫が必要です。