Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php从多个mysql表获取图像_Php_Mysql_Image_Fetch_Multiple Tables - Fatal编程技术网

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

使用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

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

我试图做的是使用搜索栏获取存储在多个表中的图像,以定义参数,即艺术家姓名(我知道将图像存储在数据库中可能会导致许多问题,但这是大学的一项练习,因此我不能做太多)

所以现在具体来说。我有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_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正在尝试理解基本知识,并且该解决方案更易于理解和维护,性能损失很小。