用户从不同的页面访问此页面,点击一个链接,然后附加?photo_id=
,然后添加ID号。我希望查看者在到达此页面时可以获得某些信息。为MySQLI使用已初始化的预处理语句时,leftjoin如何工作?
我希望他们能够看到照片,照片名称和摄影师的名字。前两个不是问题,因为photo_id
,photo_filename
和photo_title
都在同一个表中。只要我尝试获取有关此照片的信息,该信息位于名为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();
}
前三个变量($photo_id
,$photo_title
和$photo_filename
)做工精细,我可以附和出来我的网页上,但我从LEFTJOIN这样添加的其他变量因为来自不同表格的photographers.photographer_id
和photographers.photographer_name
将不起作用。据了解,当我在SELECT行上添加额外的列名时,页面完全中断。
我有一种感觉,它与bind_result()
函数中的变量数量有关。我认为他们需要匹配SELECT行中提到的列数,但我并不想为每个列创建一个变量。
有人可以帮我吗?