当我在课堂上组织代码时,我遇到了从数据库中获取的图像的问题。
这是有效的代码:
$mysqli=new mysqli("XXXX","XXXX","XXX","XXXXXX");
if (mysqli_connect_errno()) {
die("Error al conectar: ".mysqli_connect_error());
}
$result=$mysqli->query("SELECT * FROM `imagenes` WHERE id_imagenes=".$_GET["id"]);
$row=$result->fetch_array(MYSQLI_ASSOC);
header("Content-type:".$row["tipo_imagenes"]);
echo $row["imagen_imagenes"];
但是当我在下面这样做时,它不起作用。它显示了损坏的图像图标:
[imagen.php]
require('../includes/php/config.php');
$imagen_trae= new imagen();
$imagen = $imagen_trae->traerImagen();
header("Content-type:".$imagen["tipo_imagenes"]);
echo $imagen["imagen_imagenes"];
[config.php]
require('conexion.php');
include_once('imagen_class.php');
[conexion.php]
define('DB_HOST','xxxxx');
define('DB_USER','xxxx');
define('DB_PASS','xxxxx');
define('DB_NAME','xxxx');
define('DB_CHARSET','utf-8');
class conexion
{
protected $_db;
public function __construct()
{
$this->_db = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
if ( $this->_db->connect_errno )
{
echo "Fallo al conectar a MySQL: ". $this->_db->connect_error;
return;
}
$this->_db->set_charset(DB_CHARSET);
}
}
[imagen_class.php]
class imagen extends conexion
{
public function __construct()
{
parent::__construct();
}
public function traerImagen()
{
$result=$this->_db->query("SELECT * FROM imagenes WHERE id_imagenes=".$_GET["id"]);
$imagenes_todas=$result->fetch_array(MYSQLI_ASSOC);
return $imagenes_todas;
}
}
提前致谢!
答案 0 :(得分:0)
代码对我有用。
唯一的可能性是$ _GET没有移交给imagen.php
要测试将$ _GET [“id”]设置为一个令人兴奋的 ID
[imagen.php]
$_GET["id"]=existing_id;
require('../includes/php/config.php');
$imagen_trae= new imagen();
$imagen = $imagen_trae->traerImagen();
header("Content-type:".$imagen["tipo_imagenes"]);
echo $imagen["imagen_imagenes"];
如果没有连接,也不要让代码运行!!
简单的返回是不够的
在返回
$this->_db
设置为null
class conexion
{
protected $_db;
public function __construct()
{
$this->_db = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
if ( $this->_db->connect_errno )
{
echo "Fallo al conectar a MySQL: ". $this->_db->connect_error;
$this->_db = null;
return;
}
并测试
class imagen extends conexion
{
public function __construct()
{
parent::__construct();
}
public function traerImagen()
{
if ($this->_db != null) {
$result=$this->_db->query("SELECT * FROM imagenes WHERE id_imagenes=".$_GET["id"]);
$imagenes_todas=$result->fetch_array(MYSQLI_ASSOC);
return $imagenes_todas;
} else return null;
答案 1 :(得分:0)
我修好了家伙!
我必须删除require config.php(具有连接的文件,所有其他类和函数)并将其替换为显示图像所需的那些。我无视我在config.php中所做的所有事情,因为我不想让我的问题太长,但我想这些文件中的某些东西会破坏图像或其他东西。
再次感谢您有时间阅读并回复。我有一些很棒的提示!