从数据库显示特定于日期的图像

时间:2015-12-10 22:57:23

标签: php mysqli

目标是让客户将其广告上传到数据库,触发并通​​过电子邮件进行审批。一旦获得批准,广告将在设置日期之间的位置显示。

我已正确编写代码,以便按日期和管理区域的批准显示。我只是无法显示图像。

以下代码详述了目前为止的流程。

    <?php 
include('mysql_connect.php');{

  $location='1'; 
  }

 $resultSet = $mysqli->query("SELECT * FROM adverts WHERE adloc = '$location' AND approval ='Y' ");

if($resultSet->num_rows > 0){
    while($rows = $resultSet->fetch_assoc())
    {
        $id = $rows ['id'];
        $start = $rows ['start'];
        $end = $rows ['enddate'];
        $business = $rows ['business'];
        $email = $rows ['email'];
        $tel = $rows ['tel'];
        $web = $rows ['web'];
        $advert = $rows ['image'];

    $Date = date('Y-m-d');
    $Date=date('Y-m-d', strtotime($Date));; 
    $DateBegin = date('Y-m-d', strtotime("$start"));
    $DateEnd = date('Y-m-d', strtotime("$end"));
}

if (($Date > $DateBegin) && ($Date < $DateEnd))
    {
      echo "ADVERT";
      echo '<img src="getad.php?id=$id">';

    }
    else
    {
      echo "FILLER IMAGE";  
    }

}
?>

getad.php文件的代码如下

if(isset($_GET['id']))
{

$id = mysqli_real_escape_string($_GET['id']);
$query = mysqli_query("SELECT * FROM adverts WHERE id= '$id'");
while ($row = mysqli_fetch_assoc($query))
{
    $image = $row['image'];
}
header("content-type: image/jpeg");
echo $image;
}
else
{
    echo "Error!";
}
?>

我相信我离得很远。该图像是数据库中的JPEG LONGBLOB。

谢谢。

1 个答案:

答案 0 :(得分:2)

首先,这让你失望:

$id = mysqli_real_escape_string($_GET['id']);
$query = mysqli_query("SELECT * FROM adverts WHERE id= '$id'");

这两个函数都需要传递数据库连接并作为第一个参数:

$id = mysqli_real_escape_string($mysqli, $_GET['id']);
$query = mysqli_query($mysqli, "SELECT * FROM adverts WHERE id= '$id'");

参考文献:

但是,可能需要使用base64_decode

header("content-type: image/jpeg");
echo base64_decode($image);

echo '<img src="data:image/gif;base64,' . $image . '" />';

以下是借鉴https://stackoverflow.com/a/20564797/

的示例
$db = mysqli_connect("localhost","root","","DbName"); //keep your db name
$sql = "SELECT * FROM products WHERE id = $id";
$sth = $db->query($sql);
$result=mysqli_fetch_array($sth);
echo '<img src="data:image/jpeg;base64,'.base64_encode( $result['image'] ).'"/>';

出于调试目的:

error reporting添加到文件的顶部,这有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

旁注:只应在暂存时进行显示错误,而不是生产。

  • 以及or die(mysqli_error($mysqli))mysqli_query()