exe-6ren">
gpt4 book ai didi

PHP 将从 BLOB 而不是从 MySQL 表中的 LONGBLOB 生成 jpg 图像

转载 作者:行者123 更新时间:2023-11-30 23:26:31 25 4
gpt4 key购买 nike

以下脚本从 MySQL 中的 BLOB 列输出图像已经很长时间了:

<?
$dbname="usr_web5_1";
$db = new mysqli($dbhost, $dbuser, $dbpwd, $dbname);
$sql = "SELECT foto, fototype, modified FROM `Komplettverzeichnis_extras` WHERE `WPID`= ?";
$stmt = $db->prepare($sql);
$stmt->bind_param("s",$_GET['id']);
if (!$stmt->execute()) $error=true;
$stmt->bind_result($file,$filetype,$modified);
$stmt->fetch();
if (!isset($filetype)) $filetype = "image/jpeg";
if (!$error) {
header("Content-type: $filetype;");
header("Last-Modified: $modified;");
} else {
echo "Error";
echo $db->error;
}
echo $file;
$stmt->close();
$db->close();
}
?>

我已经尝试将列更改为 LONGBLOB 并将其替换为新的 LONGBLOB 列;图片不会显示。这与我是尝试显示已有图像还是尝试上传新图像无关。

我发现的最接近的问题是 here (德语)。用于更改我使用的列

ALTER TABLE `Komplettverzeichnis_extras` CHANGE `foto` `foto` LONGBLOB DEFAULT NULL

显然,如有必要,我愿意提供更多信息。

我使用 phpMyAdmin 版本 3.5.2.2、PHP 5.3.17 和 mysql 客户端 API 版本(是 mysql 版本吗?)5.1.63。

提前致谢!

最佳答案

好的,我想出了问题:

对于 BLOB,如您在上面所见,我的代码中使用的用于字符串的 mySQLi 方法将起作用。 Longblob 并非如此。在 execute() 之后和 bind_result() 之前,需要一个 store_result()。另外,保存时,我不能简单地使用 bind_param()。相反,必须使用以下使用 NULL 的构造:

if (!$stmt = $db->prepare($sql)) printf($db->error);
$null = NULL;
$stmt->bind_param("bsi",$null,$type,$id);
$stmt->send_long_data(0,$data);
if (!$stmt->execute()) printf($db->error);
$stmt->close();

简而言之,以下资源帮助了我: Oswald@Work

谢谢大家的努力!

关于PHP 将从 BLOB 而不是从 MySQL 表中的 LONGBLOB 生成 jpg 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13044595/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com