извлечение изображений из нескольких таблиц 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 3

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.

Методика поддерживается сведения:Ури протокол.