无法通过php数组显示数据库中的图像

无法通过php数组显示数据库中的图像,php,Php,学习php 我有一个sql数据库,其中包含一个名为“images”的表,该表存储用户将上载的图像路径。我遇到的问题是将图像路径从数据库拉到一个PHP数组,然后使用这些路径在屏幕上以列表项的形式显示图像。但是,当我运行页面时,不会显示任何内容 数据库连接代码: include('Database.php'); class Images extends Database{ private $_images = array(); public function __construct(){

学习php

我有一个sql数据库,其中包含一个名为“images”的表,该表存储用户将上载的图像路径。我遇到的问题是将图像路径从数据库拉到一个PHP数组,然后使用这些路径在屏幕上以列表项的形式显示图像。但是,当我运行页面时,不会显示任何内容

数据库连接代码:

include('Database.php');

class Images extends Database{

private $_images = array();

public function __construct(){

  $conn = $this->create_connection('read');     
  $sql = "SELECT image_path FROM 'items' WHERE catagory='tshirt'";      
  $result = $conn->query($sql)or die(mysql_error());        
  while($paths = mysql_fetch_array($result)) {      
    $this->_images[] = $paths['catagory'];      
  }         
}

public function getItems() {        

  return $this->_images;   
}
视图的代码:

<ul>
<?php
require ('../model/Images.php');
$imageArray = array();
$images = new Images();
$imageArray[] = $images->getItems();
foreach($ImageArray as $value){
        echo '<li><img src="'.$value.'"></li>';
}   
?>
</ul>
所以我知道foreach循环和查询工作。“创建连接”功能我以前使用过,连接到同一个数据库没有任何问题,我有点担心 难倒了,但我认为它可能连接到mysql\u fetch\u数组部分

我是否使用了正确的方法?还是有更好的办法来解决这个问题

希望有人能给我指出正确的方向


谢谢

除了您正在用“category”填充$this->images[],其他一切看起来都正常,但是没有从mysql中选择“category”,而是选择了“image\u path”,请尝试以下操作:

while($paths = mysql_fetch_array($result)) {        
    //$this->_images[] = $paths['catagory'];
    $this->_images[] = $paths['image_path'];      
}  

更改
$imageArray[]=$images->getItems()
$imageArray=$images->getItems()位于Digital Precision建议的更改之上

编辑:

$imageArray=$images->getItems();
变量转储($imageArray);
foreach($imageArray作为$value){
var_dump(价值);
回音“
  • ”; }
    会找到你散失数据的地方。我希望这与DB中的错误映像路径无关

    编辑:


    var\u dump
    始终显示某些内容。。。检查“空白页”的来源以查看显示的内容,如果转储的变量为空,请尝试使用
    var\u dump($images)应该显示对象中的内容,如果静态属性\u images为空数组,则构造函数有问题,可以尝试
    而($path=mysql\u fetch\u array($result,mysql\u ASSOC))
    var\u dump($result)
    before WHILE LOOP-您在某处丢失了数据…

    谢谢,我尝试了您的建议,这完全有意义,但是仍然没有显示任何内容如果我遇到此问题,我会首先从mysql命令行运行sql语句,并确保结果可用,如果是这样的话,那么我会在while循环之后填充
    $this->\u images
    数组之后添加一个var\u dump,如果数据存在,然后从调用脚本中添加
    var\u dump($images->getItems())
    。感谢DP的建议,我会给出一个goahh是的很好的捕获,将生成一个多维数组@Alan,也试试Bensiu的建议。谢谢大家,但仍然没有显示任何内容,如果能显示一个错误来处理,那就太好了:)!!我还注意到我的代码中有一个输入错误对不起!ImageArray应该是foreach循环中的ImageArray,我改变了这个,但是仍然有相同的问题,我已经按照bensiu的建议添加了var_dump,谢谢。我仍然得到一张空白页。因此,我决定检查我的位置是否正确,因为我刚刚向tesy输入了“hello”,然后我注释掉while循环并将随机字符串放入$_images数组,只是为了在屏幕上显示一些内容,但由于某种原因,屏幕仍然显示为空白?@bensiu,谢谢,我已经在$images=newimages()下注释掉了所有内容;这是下面的输出:object(images)#1(3){[“{u images”:“images”:private]=>array(2){[0]=>string(5)“wffef”[1]=>string(7)“dsfwvew”}[“{u error_messages”:protected]=>array(0){}[“user_messages”:protected]=>array(0){}感谢大家的努力,它给了我一些工作:)“catagory”也拼写错误,应该是“category”。另外,只是一个友好的提示,您不应该将该查询放在_construct()方法中,因为每次实例化该对象时,它都会运行该查询。相反,您可以将其添加到一个新方法中,例如
    loadImages()
    。哦,还有一点需要注意的是,在私有成员变量和方法前面加下划线的做法是一种古老的PHP4.x倒退,您应该试着在将来的项目中训练自己不要这样做。
    while($paths = mysql_fetch_array($result)) {        
        //$this->_images[] = $paths['catagory'];
        $this->_images[] = $paths['image_path'];      
    }  
    
    $imageArray = $images->getItems();
    var_dump( $imageArray );
    foreach($imageArray as $value) {
            var_dump( $value );
            echo '<li><img src="'.$value.'"></li>';
    }