Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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
在sql中存储图像并在php中检索_Php_Mysql - Fatal编程技术网

在sql中存储图像并在php中检索

在sql中存储图像并在php中检索,php,mysql,Php,Mysql,我已经创建了一个表,通过LongBLOB保存了图像。我需要展示这些图片。 我可以在sql中保存图像,但当我想读取和显示图像时,我遇到了一个问题, 无法显示,因为它包含错误 我正在使用此代码将图像保存到我的sql表中 <?php $username = "root"; $password = ""; $host = "localhost"; $database = "imgtest"; $link = mysql_connect($host, $username, $password); i

我已经创建了一个表,通过LongBLOB保存了图像。我需要展示这些图片。 我可以在sql中保存图像,但当我想读取和显示图像时,我遇到了一个问题, 无法显示,因为它包含错误

我正在使用此代码将图像保存到我的sql表中

<?php
$username = "root";
$password = "";
$host = "localhost";
$database = "imgtest";
$link = mysql_connect($host, $username, $password);
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
mysql_select_db($database);
if (isset($_FILES['image']) && $_FILES['image']['size'] > 0) {
    $tmpName = $_FILES['image']['tmp_name'];
    $fp = fopen($tmpName, 'r');
$data = fread($fp, filesize($tmpName));
$data = addslashes($data);
fclose($fp);
$namee = $_FILES['image']['name'];
mysql_query("INSERT INTO image(cap,image) VALUES ('$namee','$data')");
}
    ?>
 <?php
$con=mysqli_connect("localhost","root","","imgtest");
$wich=$_POST['wich'];
$resoult=mysqli_query($con,"SELECT * FROM image WHERE id LIKE '$wich'");
$imgd = $_GET['img'];
$row = mysqli_fetch_array($resoult);
$image = $row['image'];
header("content-type:image/jpeg");
echo $image;

?>
我用这段代码从我的sql表中读取并显示图像

<?php
$username = "root";
$password = "";
$host = "localhost";
$database = "imgtest";
$link = mysql_connect($host, $username, $password);
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
mysql_select_db($database);
if (isset($_FILES['image']) && $_FILES['image']['size'] > 0) {
    $tmpName = $_FILES['image']['tmp_name'];
    $fp = fopen($tmpName, 'r');
$data = fread($fp, filesize($tmpName));
$data = addslashes($data);
fclose($fp);
$namee = $_FILES['image']['name'];
mysql_query("INSERT INTO image(cap,image) VALUES ('$namee','$data')");
}
    ?>
 <?php
$con=mysqli_connect("localhost","root","","imgtest");
$wich=$_POST['wich'];
$resoult=mysqli_query($con,"SELECT * FROM image WHERE id LIKE '$wich'");
$imgd = $_GET['img'];
$row = mysqli_fetch_array($resoult);
$image = $row['image'];
header("content-type:image/jpeg");
echo $image;

?>

任何人都可以帮我解决这个问题???

强烈建议将图像存储在您的文件结构中服务器、云服务器或其他可访问位置的目录中,并且仅在数据库中保留url、文件名或路径等引用,以便重新创建指向实际图像的链接或路径。在数据库中保存图像是一种不好的做法

为什么要使用mysql_uu库?它已被弃用。 您需要存储二进制数据。使用事先准备好的陈述。这样你就可以得到二进制数据。 从2可以转储addslashes。这是问题的根源
谢谢你的回答Silvertiger我知道这是个坏主意。但我需要它!你能帮帮我吗?为什么在数据库中存储图像是一种不好的做法?它使我们的数据库变得如此之大!您运行的任何查询都必须扫描整个图像数据以进行迭代,即搜索、匹配、筛选、联接等。随着数据库的增长,查询的运行速度会越来越慢。可能的重复是使用不推荐的API和现代方法的旧代码的混合。奇怪的另外,更改您的密码$pstenstrm我使用了该代码,但仍然存在相同的问题我只是将数据更改为二进制,但没有任何更改!在代码1中,当我删除addslashes时,我不能再将文件保存在sql中了!我没有得到任何错误@user3719210-你在使用mysqli库和我做过的准备语句吗。有人能举个简单的例子,把它贴在这里,这样我就可以使用代码了吗?