Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.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
Php 未从数据库接收图像_Php_Html_Mysql - Fatal编程技术网

Php 未从数据库接收图像

Php 未从数据库接收图像,php,html,mysql,Php,Html,Mysql,数据库中存储的所有其他信息都在网站上,而不是BLOB图像。数据库保存图像,就好像您按下它将显示正在存储的图像一样。谢谢 GetImage.php <?php include "connection.php"; $ID = $_GET["ID"]; $SQLCommand = "SELECT * FROM products WHERE ID = '$ID'"; $Result = mysqli_query($con, $SQLCommand); $row = mysqli_fetch_

数据库中存储的所有其他信息都在网站上,而不是BLOB图像。数据库保存图像,就好像您按下它将显示正在存储的图像一样。谢谢

GetImage.php

<?php
include "connection.php";

$ID = $_GET["ID"];

$SQLCommand = "SELECT * FROM products WHERE ID = '$ID'";
$Result = mysqli_query($con, $SQLCommand);

$row = mysqli_fetch_assoc($Result);

header("Content-type:" . $row["Name"]);
echo $row["Image"];

?>
相反,您可以使用

<?php
    include "connection.php";

    $SQLCommand = "SELECT * FROM products";
    $Result = mysqli_query($con, $SQLCommand);

    while($row = mysqli_fetch_assoc($Result)){
    echo "<p id='p1'>" . $row["Name"] .
         "<br></p><p id='p3'>£" . $row["Price"] .
                  "<br><br><img src=" . base64_encode($row['image']) . "         width=10%>" .
             "<br><a href=productdetails.php?ID=" . $row["ID"] . ">Details</a></p>".
             "<p id='p2'><a href=BasketAdd.php?ID=" . $row["ID"] . ">Add to     Basket</a><br><br>";
    }
?>
相反,您可以使用

<?php
    include "connection.php";

    $SQLCommand = "SELECT * FROM products";
    $Result = mysqli_query($con, $SQLCommand);

    while($row = mysqli_fetch_assoc($Result)){
    echo "<p id='p1'>" . $row["Name"] .
         "<br></p><p id='p3'>£" . $row["Price"] .
                  "<br><br><img src=" . base64_encode($row['image']) . "         width=10%>" .
             "<br><a href=productdetails.php?ID=" . $row["ID"] . ">Details</a></p>".
             "<p id='p2'><a href=BasketAdd.php?ID=" . $row["ID"] . ">Add to     Basket</a><br><br>";
    }
?>

数据库中图像的问题通常与图像在数据库中的存储方式有关。

图像可以存储为二进制文件,但如果存储为base64,则问题较少。

我需要看到的是在数据库中存储图像的代码
给定一个名为“image”的文件输入

或作为更新:

UPDATE `table` SET `image`='$img' WHERE ...
在表中,字段图像将具有“文本”类型

但这还不够…

您需要知道图像的尺寸和类型。

if( is_uploaded_file($_FILES['image1']['tmp_name']) || !($_FILES['image1']['error'] !== UPLOAD_ERR_OK)){
  $save = false;
  switch(strtolower($_FILES['image1']['type'])){
  case 'image/jpeg':
    $image = @imagecreatefromjpeg($_FILES['image']['tmp_name']);
    if ($image !== false){$save = true;break;}
  case 'image/png':
    $image = @imagecreatefrompng($_FILES['image']['tmp_name']);
    if ($image !== false){$save = true;break;}
  case 'image/gif':
    $image = @imagecreatefromgif($_FILES['image']['tmp_name']);
    if ($image !== false){$save = true;break;}
  default:
    $img = @getimagesize($_FILES['image']['tmp_name']);
    switch(strtolower($img['mime'])){
    case 'image/jpeg':
      $image = @imagecreatefromjpeg($_FILES['image']['tmp_name']);
      $type = 'jpg';
      if ($image !== false){$save = true;break;}
    case 'image/png':
      $image = @imagecreatefrompng($_FILES['image']['tmp_name']);
      $type = 'png';
      if ($image !== false){$save = true;break;}
    case 'image/gif':
      $image = @imagecreatefromgif($_FILES['image']['tmp_name']);
      $type = 'gif';
      if ($image !== false){$save = true;break;}
    default:
      $filename = $_FILES['image']['name'];
      $ext = substr($filename,-3);
      switch(strtolower($ext)){
      case 'jpg':
        $image = @imagecreatefromjpeg($_FILES['image']['tmp_name']);
        if ($image !== false){$save = true;break;}
      case 'gif':
        $image = @imagecreatefromgif($_FILES['image']['tmp_name']);
        if ($image !== false){$save = true;break;}
      case 'png':
        $image = @imagecreatefrompng($_FILES['image']['tmp_name']);
        if ($image !== false){$save = true;break;}
      default:
        $image = @imagecreatefromjpeg($_FILES['image']['tmp_name']);
        if ($image !== false){$save = true;break;}
        $image = @imagecreatefrompng($_FILES['image']['tmp_name']);
        if ($image !== false){$save = true;break;}
        $image = @imagecreatefromgif($_FILES['image']['tmp_name']);
        if ($image !== false){$save = true;break;}
      }
    }
  }
}
获取宽度和高度

$width  = imagesx($image);
$height = imagesy($image);
$base64 = base64_encode($image);
把它们放在一起形成一个HTML
”;

数据库中图像的问题通常与图像在数据库中的存储方式有关。

图像可以存储为二进制文件,但如果存储为base64,则问题较少。

我需要看到的是在数据库中存储图像的代码。
给定一个名为“image”的文件输入

或作为更新:

UPDATE `table` SET `image`='$img' WHERE ...
在表中,字段图像将具有“文本”类型

但这还不够…

您需要知道图像的尺寸和类型。

if( is_uploaded_file($_FILES['image1']['tmp_name']) || !($_FILES['image1']['error'] !== UPLOAD_ERR_OK)){
  $save = false;
  switch(strtolower($_FILES['image1']['type'])){
  case 'image/jpeg':
    $image = @imagecreatefromjpeg($_FILES['image']['tmp_name']);
    if ($image !== false){$save = true;break;}
  case 'image/png':
    $image = @imagecreatefrompng($_FILES['image']['tmp_name']);
    if ($image !== false){$save = true;break;}
  case 'image/gif':
    $image = @imagecreatefromgif($_FILES['image']['tmp_name']);
    if ($image !== false){$save = true;break;}
  default:
    $img = @getimagesize($_FILES['image']['tmp_name']);
    switch(strtolower($img['mime'])){
    case 'image/jpeg':
      $image = @imagecreatefromjpeg($_FILES['image']['tmp_name']);
      $type = 'jpg';
      if ($image !== false){$save = true;break;}
    case 'image/png':
      $image = @imagecreatefrompng($_FILES['image']['tmp_name']);
      $type = 'png';
      if ($image !== false){$save = true;break;}
    case 'image/gif':
      $image = @imagecreatefromgif($_FILES['image']['tmp_name']);
      $type = 'gif';
      if ($image !== false){$save = true;break;}
    default:
      $filename = $_FILES['image']['name'];
      $ext = substr($filename,-3);
      switch(strtolower($ext)){
      case 'jpg':
        $image = @imagecreatefromjpeg($_FILES['image']['tmp_name']);
        if ($image !== false){$save = true;break;}
      case 'gif':
        $image = @imagecreatefromgif($_FILES['image']['tmp_name']);
        if ($image !== false){$save = true;break;}
      case 'png':
        $image = @imagecreatefrompng($_FILES['image']['tmp_name']);
        if ($image !== false){$save = true;break;}
      default:
        $image = @imagecreatefromjpeg($_FILES['image']['tmp_name']);
        if ($image !== false){$save = true;break;}
        $image = @imagecreatefrompng($_FILES['image']['tmp_name']);
        if ($image !== false){$save = true;break;}
        $image = @imagecreatefromgif($_FILES['image']['tmp_name']);
        if ($image !== false){$save = true;break;}
      }
    }
  }
}
获取宽度和高度

$width  = imagesx($image);
$height = imagesy($image);
$base64 = base64_encode($image);
把它们放在一起形成一个HTML
”;

Hi@thewebmstr不幸的是,这不起作用。感谢您的帮助。此外,您应该创建一个列,该列仅存储图像的二进制类型,并且base64_encode()可以将二进制格式编码为图像格式。您的格式不正确。它应该是
src=“data:image/jpg;”。base64,base64_编码($row['image'])。'“/>
。那么gif和png呢?但这没关系,因为在将图像保存到表中时更可能出现问题。您好@thewebmstr很遗憾,这不起作用,感谢您尝试提供帮助。此外,您应该创建一个列,仅存储图像的二进制类型和base64_encode()无法将二进制格式编码为图像格式。您的格式不正确。它应该是
src=“data:image/jpg;“.base64,base64_编码($row['image'])。”/>
。那么gif和png呢?但这没关系,因为当图像保存到表中时,问题更可能出现。我在第一篇文章中添加了插入图像表单,我指的是插入或更新表的SQL。这并不像看上去那么容易。如果有人上传的文件不是图像怎么办?那类型呢?你不知道;我不想限制用户,因为你不知道如何处理多种图像类型,是吗?你打不过这种例行公事。文件扩展名可能是错误的,HTTP mime类型可能是错误的,但如果是jpg、gif或png,则此例程将正确执行。如果不是,
$save
将为false。您需要知道类型,因此当您使用base64时,您需要填写
data:image/$type;base64,
我在我引用SQL插入或更新表的第一篇文章中添加了插入图像表单。这并不像看上去那么容易。如果有人上传的文件不是图像怎么办?那类型呢?你不知道;我不想限制用户,因为你不知道如何处理多种图像类型,是吗?你打不过这种例行公事。文件扩展名可能是错误的,HTTP mime类型可能是错误的,但如果是jpg、gif或png,则此例程将正确执行。如果不是,
$save
将为false。您需要知道类型,因此当您使用base64时,您需要填写
data:image/$type;base64,
警告:当使用
mysqli
时,您应该使用和将用户数据添加到查询中。不要使用字符串插值或串联来完成此操作,因为您已经创建了严重的错误。切勿将
$\u POST
$\u GET
数据直接放入查询中,如果有人试图利用您的错误,这可能非常有害。警告:使用
mysqli
时,您应该使用并将用户数据添加到查询中。不要使用字符串插值或串联来完成此操作,因为您已经创建了严重的错误。切勿将
$\u POST
$\u GET
数据直接放入查询,如果有人试图利用您的错误,这可能非常有害。
$width  = imagesx($image);
$height = imagesy($image);
$base64 = base64_encode($image);
$img = "<img  width=\"$width \" height=\"$height\" src=\"data:image/$type;base64,$base64\" alt =\"image\"/>";