使用php从多个mysql表中获取图像

时间:2012-05-20 10:14:30

标签: php mysql image fetch multiple-tables

我在过去几天一直试图尝试了解如何从多个表中获取数据,但我不能说我完全理解它是如何工作的。无论如何:)

我想要做的是使用搜索栏获取存储在多个表格中的图像来定义参数,即艺术家名称(我知道在数据库中存储图像可能会导致许多问题,但这是对大学的练习所以我真的不能做太多的事情)

现在具体一点。我有5个表叫做animaldata,cardata,landscapedata,peopledata和其他数据。每个表都有以下字段:1 id 2 artist_name 3 details 4 photo 5 phototype和6 date。其中artist_name是上传图像的登录人员的姓名,详细信息是标题,照片是要保存的blob项目,照片类型是图像的井型:P

所以我想要做的是当有人使用搜索栏搜索艺术家时获取的代码并显示艺术家上传的所有表格中的所有图像。

这是我用来从1个表中获取数据的代码,但我不知道如何更改它以便搜索其他表。

这是search.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 个答案:

答案 0 :(得分:2)

如果表格具有相同的列,则更改表格,然后使用:

$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中。

data:uri协议支持该技术。

答案 1 :(得分: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 ....
    }
}