ユーザーは別のページからこのページにアクセスし、そこでリンクをクリックする?photo_id=
と、ID 番号が追加されます。閲覧者がこのページに到達したときに、特定の情報を利用できるようにしたいと考えています。
写真、写真の名前、写真家の名前を表示できるようにしたいです。photo_id
、photo_filename
、およびphoto_title
がすべて同じテーブルにあるため、最初の 2 つは問題ではありません。という別のテーブルにあるこの写真に関する情報を取得しようとするとすぐに、photographers
問題が発生します。
これが私のコードです:
$sql = 'SELECT photos.photo_id, photos.photo_title, photos.photo_filename, photos.photographer_id, photographers.photographer_id, photographers.photographer_name
FROM photos
LEFT JOIN photographers ON photos.photographer_id = photographers.photographer_id
WHERE photo_id = ?';
//initialize prepared statement
$stmt = $conn->stmt_init();
if ($stmt->prepare($sql)) {
$stmt->bind_param('i', $_GET['photo_id']);
$stmt->bind_result($photo_id, $photo_title, $photo_filename, $photographer_id);
$OK = $stmt->execute();
$stmt->fetch();
}
最初の 3 つの変数 ( $photo_id
、$photo_title
、および) は正常に機能し、それらを自分のページに表示できますが、別のテーブルのや$photo_filename
などの LEFTJOIN から追加した他の変数は機能しません。ご存知のように、SELECT 行に余分な列名を追加すると、ページが完全に壊れてしまいます。photographers.photographer_id
photographers.photographer_name
関数内の変数の量に何か関係があると感じていbind_result()
ます。SELECT 行に記載されている列の数と一致する必要があると思いますが、それぞれに変数を作成したくありません。
誰でも私を助けることができますか?