Здесь у меня есть доска объявлений на PHP с возможностью отправки комментариев и изображений. Я могу хранить комментарии и изображения в базе данных. Мой вопрос включает в себя две мои таблицы SQL, одну для сохраненных сообщений и другую таблицу для хранения изображений. Когда я выхожу из таблицы столбов, я хотел бы отобразить соответствующее изображение внутри тела сообщения. Я установил таблицы, чтобы они соответствовали атрибуту столбца DATETIME, но я не понимаю, как получить доступ к таблице моих изображений, пока я нахожусь в цикле foreach с моей таблицей сообщений. Я включил код для моего файла index.php и моего файла getImage.php. Помощь будет принята с благодарностью.
Я сделал обновление для моего файла getImage в $ ID = $ _GET ['id']; где "id" должен быть строчным. Теперь я получаю некоторые изображения, отображаемые в моей таблице, но некоторые только частичные. Думаю, я уже в пути. Я знаю, что мне нужно выражение if, чтобы определить, есть ли изображение в сообщении перед отображением. Спасибо за помощь.
<?php
include('connect.php');
$query = 'SELECT * FROM forumPosts LEFT JOIN PostImages ON
forumPosts.DATETIME = PostImages.ImageDATETIME ORDER BY replyIndex
ASC';
$statement = $db->prepare($query);
$statement->execute();
$posts = $statement->fetchAll();
$statement->closeCursor();
echo "<table>";
foreach ($posts as $post){
if ($post['post_type'] == "r"){
$post_id = $post['post_id'];
echo "<tr bgcolor='beige'><td>reply</td><td>".
$post['post_title'] . "</td ><td>". $post['post_body'] . "<img
src='getImage.php?id=".$post['ID']."'>". "</td><td>".
$post['DATETIME']. "</td><td>". $post['replyIndex']. "</td>
<td>".$post['post_type']."</td>";
?>
<?php
include('connect.php');
$ID = $_GET['id'];
$query = "SELECT * FROM PostImages WHERE ID=:ID";
$statement = $db->prepare($query);
$statement->bindvalue(':ID', $ID);
$statement->execute();
$row = $statement->fetch(PDO::FETCH_ASSOC);
header("Content-type: image/jpeg");
echo $row['image'];
?>
Вероятно, вы хотите использовать синтаксис JOIN
в запросе SELECT
. Что-то вроде:
$query = 'SELECT * FROM forumPosts LEFT JOIN postImages ON forumPosts.DATETIME = postImages.imageDATETIME ORDER BY replyIndex ASC'
Затем вы можете получить данные изображения из вашего цикла foreach, используя $post['name']
и $post['image']
.
LEFT JOIN
прежнему будет возвращать все строки из первой таблицы (forumPosts
), даже если во второй таблице нет совпадений (postImages
).
$post['name']
и$post['image']