1

我是 php 新手,正在尝试从我的 MySQL 数据库中检索图像。

运行以下脚本后,我得到“请检查 ID!” 信息。我错过了什么吗?

数据库结构

CREATE TABLE tbl_images(
    id tinyint( 3 ) unsigned NOT NULL AUTO_INCREMENT ,
    image blob NOT NULL ,
    PRIMARY KEY ( id ) 
)

PHP

<?php
if(isset($_GET['id']) && is_numeric($_GET['id'])) {
    # Connect to DB
    $link = mysqli_connect("$host", "$username", "$password") or die("Could not connect: " . mysqli_error());
    mysqli_select_db("$database") or die(mysqli_error());

    # SQL Statement
    $sql = "SELECT `image` FROM `tbl_images` WHERE id=" . mysqli_real_escape_string($_GET['id']) . ";";
    $result = mysqli_query("$sql") or die("Invalid query: " . mysqli_error());

    # Set header
    header("Content-type: image/png");
    echo mysqli_result($result, 0);
} else
    echo 'Please check the ID!';
?>
4

3 回答 3

3

因此,您要么不提供 ID,要么提供 ID 而不是“数字”。检查 的值$_GET['id']

于 2013-08-20T12:57:55.760 回答
0

使您的网址 = http://www.domain.com?id=[YOUR_IMAGE_ID]

传递?id=your_id查询字符串,您将获得带有$_GET['id'] 的 id

删除标题(“内容类型:image/png”);

在$result变量下方添加这两行

$res1= mysqli_result($result, 0);
echo '<img src="data:image/png;base64,' . base64_encode($res1) . '" />';

我也无法在您的上述代码中找到mysqli_result函数。如果您没有申报

请使用这个-

function mysqli_result($res, $row, $field=0) {
    $res->data_seek($row);
    $datarow = $res->fetch_array();
    return $datarow[$field];
}
于 2013-08-20T14:07:34.667 回答
0

这是完整的代码 -

CREATE TABLE IF NOT EXISTS `tbl_images` (
  `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT,
  `image` longblob NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

PHP

<?php
function mysqli_result($res, $row, $field=0) {
    $res->data_seek($row);
    $datarow = $res->fetch_array();
    return $datarow[$field];
}

if(isset($_GET['id']) && is_numeric($_GET['id'])) {
    # Connect to DB
    $link = mysqli_connect("$host", "$username", "$password") or die("Could not connect: " . mysqli_error());
    mysqli_select_db("$database") or die(mysqli_error());

    # SQL Statement
    $sql = "SELECT `image` FROM `tbl_images` WHERE id=" . mysqli_real_escape_string($_GET['id']) . ";";
    $result = mysqli_query("$sql") or die("Invalid query: " . mysqli_error());

    # Set header
    $res1= mysqli_result($result, 0);
    echo '<img src="data:image/png;base64,' . base64_encode($res1) . '" />';
} else
    echo 'Please check the ID!';
?>
于 2013-08-21T12:30:15.807 回答