当前位置: 首页 > 面试题库 >

PHP:使用PDO从MySQL检索图像

曹和正
2023-03-14
问题内容

我正在重构一些旧代码,包括重写基本的mysql查询以使用PDO。

以下内容在所有浏览器和所有图像类型中均能出色发挥作用:

$query = 'SELECT image FROM image WHERE imageid=' . $image_id;
$result = mysql_query($query, $db_conn); querycheck($result);
header("Content-type: image");
echo mysql_result($result, 0);

不幸的是,但是我使用PDO重写了它,但是它不起作用。我已经遍历了整个PDO文档和标准的Web搜索,但是所有建议/解决方案都无效。

如何使用PDO轻松地从MySQL中获取图像并显示图像?

编辑1:

马修·拉兹洛夫(Matthew Ratzloff)在下面给出了明显的答案,但这没有用。这是我使用PDO测试的实际代码(并且我已经尝试了许多变体/参数):

$connectstring_temp = 'mysql:host=' . $A . ';dbname=' .$B;
$dbh_temp = new PDO($connectstring_temp, $login, $password);
#$dbh_temp->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
#$dbh_temp->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,true);

$sql = "SELECT image FROM image WHERE imageid=" . $image_id;
$query = $dbh_temp->prepare($sql);
$query->execute();

$query->bindColumn(1, $image, PDO::PARAM_LOB);
$query->fetch(PDO::FETCH_BOUND);
header("Content-Type: image");
echo $image;

我保留了相同的语法,尽管对于最终代码$ image_id需要作为参数传递。上面的代码不起作用。PDO适用于所有其他所有类型的查询。


问题答案:

您需要对imageid值进行参数化并将参数绑定到PDO::PARAM_LOB

$sql = "SELECT image FROM image WHERE imageid=:id";
$query = $db_conn->prepare($sql);
$query->execute(array(':id' => $image_id));

$query->bindColumn(1, $image, PDO::PARAM_LOB);
$query->fetch(PDO::FETCH_BOUND);
header("Content-Type: image");
echo $image;

当然,您还需要指定完整,正确的内容类型(例如image / png)。



 类似资料:
  • 问题内容: 我已经看到了这个问题问的时候负荷,但他们都真的很长了,我自己在做什么......所以,就不能回避我的头,可能有人告诉我怎么走,从这个使用PDO将过程转换为php: 程序: 我尝试过的PHP代码: 但是,对于一个比我脑细胞更多的人来说,这可能不明显。任何帮助表示赞赏。 关于为什么我相信这应该起作用的参考: http://www.php.net/pdo.prepared-statement

  • 问题内容: 如何在MySQL中插入图像,然后使用PHP检索图像? 我在这两个领域的经验都很有限,我可以使用一些代码让我着手解决这个问题。 问题答案: 首先,您创建一个MySQL表来存储图像,例如: 然后,您可以将图像写入数据库,如下所示: 您可以使用以下方法在网页中显示数据库中的图像:

  • 问题内容: 我正在尝试使用PDO在PHP中运行查询。该查询在顶部具有一些变量来确定排名,除了在$ sql中使用SET @var时,它返回一个空行集。但是,如果删除有问题的SQL,它会返回正常值。 我不想在我的脚本中返回@ prev_value,@ rank_count或@rank_increasing,仅返回它在SELECT中创建的排名。 你能告诉我我做错了吗? 谢谢 问题答案: 在此处找到解决方

  • 我在PHP(PDO)中遇到了这种情况; 我正在实现一个从MySql中检索数据的方法,并且做得很好,但问题是重复的数据恢复为关键骨,没有任何值,但其他数据附加更多,留下脚本和图像以了解更多细节; data.php 可变检验 json重复 预期结果

  • 问题内容: 拜托,有人能告诉我我在做什么错吗?我只是从表中检索结果,然后将它们添加到数组中。一切正常,直到我检查结果为空为止。 这将获得匹配项,将其添加到我的数组中,并按预期回显结果: 当我尝试检查空结果时,我的代码返回“空”,但不再产生匹配结果: 与往常一样,我们将提供任何帮助。谢谢! 问题答案: 您这样做时会丢掉结果行。那不是您检查是否有任何结果的方法。你做 相关文档在这里:http : //

  • 在我的应用程序中,我有一个适用于多个用户的通用查询。在某些情况下,用户之间的表结构可能不同。我有一个查询,我只想应用于列存在于表中的用户。