使用php从多个mysql表获取图像
在过去的几天里,我一直在尝试理解如何从多个表中获取数据,但我不能说我完全理解它是如何工作的。无论如何:) 我试图做的是使用搜索栏获取存储在多个表中的图像,以定义参数,即艺术家姓名(我知道将图像存储在数据库中可能会导致许多问题,但这是大学的一项练习,因此我不能做太多) 所以现在具体来说。我有5个表,分别是animaldata、cardata、landscapedata、peopledata和otherdata。每个表都有以下字段:1 id 2艺术家姓名3详细信息4照片5照片类型和6日期。其中,artist_name是上载图像的登录人员的姓名,details是标题,photo是要保存的blob项目,phototype是。。图像的井类型:P 所以我想做的是,当有人使用搜索栏搜索艺术家时,代码从艺术家上传的所有表格中获取并显示所有图像 下面是我用来从1个表中获取数据的代码,但我不知道如何修改它以搜索其他表 这就是search.php使用php从多个mysql表获取图像,php,mysql,image,fetch,multiple-tables,Php,Mysql,Image,Fetch,Multiple Tables,在过去的几天里,我一直在尝试理解如何从多个表中获取数据,但我不能说我完全理解它是如何工作的。无论如何:) 我试图做的是使用搜索栏获取存储在多个表中的图像,以定义参数,即艺术家姓名(我知道将图像存储在数据库中可能会导致许多问题,但这是大学的一项练习,因此我不能做太多) 所以现在具体来说。我有5个表,分别是animaldata、cardata、landscapedata、peopledata和otherdata。每个表都有以下字段:1 id 2艺术家姓名3详细信息4照片5照片类型和6日期。其中,ar
<?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>";
}
?>
用于更改表格(如果它们具有相同的列),然后使用:
$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中
该技术受协议支持。尝试以下方法:
// 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注入攻击。您确实应该使用准备好的语句,将变量作为参数传递到语句中,而这些参数不会对SQL进行求值。如果你不知道我在说什么,或者不知道如何修复它,那就读一读他的故事吧。如果他的教授们在他身上尝试SQL注入,我发誓我会飞到那里和那些坏家伙打招呼!谢谢,我更改了这些内容,但是当我搜索艺术家姓名时,如果您运行linux,只会出现一个空白页,里面没有任何内容(但也没有错误),请尝试“php-l/path/to/file.php”检查语法/解析错误。如果您直接访问的文件()中有语法/解析错误,则不会显示语法/解析错误。它们仅在包含文件时显示。我的计算机上目前没有linux。你认为我应该制作一个单独的php页面来从数据库中获取数据和图像,而不是ok,它现在可以工作了。。但似乎还有另一个问题。。假设我搜索“ekptwtos”,有3张动物图片和2张人图片,它只显示最后一张表的2张照片(在本例中为人)。这对数据库进行了5次单独查询,至少联合连接所有查询,以便一次发送所有查询。@Mihai有效点,但是OP正在尝试理解基本知识,并且该解决方案更易于理解和维护,性能损失很小。