在类中组织代码时,数据库中的图像未显示

时间:2015-12-05 22:36:45

标签: php sql database image mysqli

当我在课堂上组织代码时,我遇到了从数据库中获取的图像的问题。

这是有效的代码:

$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; 
    }
} 

提前致谢!

2 个答案:

答案 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中所做的所有事情,因为我不想让我的问题太长,但我想这些文件中的某些东西会破坏图像或其他东西。

再次感谢您有时间阅读并回复。我有一些很棒的提示!