извлечение изображений из нескольких таблиц mysql с помощью php
В течение последних нескольких дней я пытался понять, как получить данные из нескольких таблиц, но не могу сказать, что полностью понял, как это работает. В любом случае:)
То, что я пытаюсь сделать, это получить изображения, хранящиеся в нескольких таблицах, используя строку поиска, чтобы определить параметры, т. е. имя исполнителя (я знаю, что хранение изображения в базе данных может вызвать много проблем, но это упражнение для университета, поэтому я не могу действительно сделать много об этом)
Так что конкретнее сейчас. У меня есть 5 таблиц, которые называются animaldata, cardata, landscapedata, peopledata и другие. Каждая из таблиц имеет следующие поля: 1 id 2 artist_name 3 details 4 photo 5 phototype и 6 date. Где artist_name-это имя зарегистрированного пользователя, который загружает изображение, а details-заголовок, photo-это объект blob, который нужно сохранить, а phototype-это .. ну тип изображения: P
Итак, что я хочу сделать, когда кто-то использует строку поиска для поиска исполнителя, код для извлечения и отображение всех изображений из всех таблиц, загруженных художником.
Вот код, который я использую для извлечения данных из 1 таблицы, но я не знаю, как изменить его, чтобы искать и другие таблицы.
Это и есть поиск.php<?php
mysql_connect ("localhost","root","") or die (mysql_error());
mysql_select_db ("photo_album_db");
$term = $_POST['term'];
$sql = mysql_query("select * from animaldata where artist_name like '%$term%'");
while ($row = mysql_fetch_array($sql)){
echo $row['details'];
echo "</br>";
echo "<img src=getan.php?id=".$row['id']." width=250 height=200/>";
echo "</br>";
}
?>
Форма строки поиска выглядит следующим образом :
<form action="search.php" method="post"><input type="text" name="term" /><input type="submit" name="search" value="Search" /></form>
Заранее спасибо за любое предложение , если вам нужны дополнительные "подсказки", дайте мне знать :):):)
2 ответа:
Попробуйте это:
// set up database connection ... $term = my_awesome_sanitizer($_POST['term']); $tables = array("animaldata", "cardata", "landscapedata", "peopledata", "otherdata"); foreach ($tables as $table) { $sql = mysql_query("select * from $table where artist_name like '%$term%'"); while ($row = mysql_fetch_array($sql)) { echo $row['details']; // show stuff .... } }
Для изменения таблицы, если они имеют одинаковые столбцы, то используйте:
$sql = mysql_query("select animaldata.artist_name AS animaldata_artist_name, cardata.artist_name AS cardata_artist_name /* do this for all columns in all tables, or mor specifically for the columns you need */ from animaldata AS a, cardata AS c, landscapedata AS l, peopledata AS p where a.artist_name like '%$term%' OR c.artist_name like '%$term%' OR l.artist_name like '%$term%' OR p.artist_name like '%$term%'");
Попробуйте это для отображения изображений:
<img src="data:image/jpeg;base64,".base64_encode($row['image_blob'])." width...
Это не будет делать отдельный запрос для фотографии. Он будет вставлять содержимое изображения в HTML.
Методика поддерживается сведения:Ури протокол.