Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.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/MYSQLI)新手_Php_Mysql_Display - Fatal编程技术网

通过数据库链接显示图像?(PHP/MYSQLI)新手

通过数据库链接显示图像?(PHP/MYSQLI)新手,php,mysql,display,Php,Mysql,Display,如果我在数据库中存储图像链接,然后在网站上显示它们,可以吗?这种做法不好吗?下面是示例代码 <? echo "<img src='/projects".$row['image']."' >"; 根据评论的要求。 根据您的应用程序及其复杂性,您可能希望尽可能简化图像加载,而将图像url存储在数据库中并不是最佳方法。理想情况下,您希望按类型将图像分组到目录中,并保留图像名称的公共结构,这样您就可以轻松地交换图像,而只需替换thair id或单个字符串。下面是一个非常简化的图像

如果我在数据库中存储图像链接,然后在网站上显示它们,可以吗?这种做法不好吗?下面是示例代码

<?
  echo "<img src='/projects".$row['image']."' >";

根据评论的要求。 根据您的应用程序及其复杂性,您可能希望尽可能简化图像加载,而将图像url存储在数据库中并不是最佳方法。理想情况下,您希望按类型将图像分组到目录中,并保留图像名称的公共结构,这样您就可以轻松地交换图像,而只需替换thair id或单个字符串。下面是一个非常简化的图像加载程序类的示例:

class ImageLoader {
    const IMAGE_PATH = '/images'
    const PROCUCT_IMAGE_PATH = '/products/'
    const ICON_IMAGE_PATH = '/icons'
    const IMAGE_EXTENSION = '.png'

    static public function getIconImage($identifier) {
        return self::IMAGE_PATH 
            . self::ICON_IMAGE_PATH 
            . $identifier 
            . self::IMAGE_EXTENSION;
    }

    static public function getProductImage($identifier) {
        return self::IMAGE_PATH 
            . self::PROCUCT_IMAGE_PATH 
            . 'product-'
            . $identifier 
            . self::IMAGE_EXTENSION;
    }
}
目录结构:

images
    -> products
        -> product-123.png
    -> icons
        -> arrow.png
图像加载程序类:

class ImageLoader {
    const IMAGE_PATH = '/images'
    const PROCUCT_IMAGE_PATH = '/products/'
    const ICON_IMAGE_PATH = '/icons'
    const IMAGE_EXTENSION = '.png'

    static public function getIconImage($identifier) {
        return self::IMAGE_PATH 
            . self::ICON_IMAGE_PATH 
            . $identifier 
            . self::IMAGE_EXTENSION;
    }

    static public function getProductImage($identifier) {
        return self::IMAGE_PATH 
            . self::PROCUCT_IMAGE_PATH 
            . 'product-'
            . $identifier 
            . self::IMAGE_EXTENSION;
    }
}
用法

手动传递图像名称:

<img src="<?= ImageLoader::getIconImage('arrow') ?>" />
“/>
将变量作为存储在DB中的id传递:

<img src="<?= ImageLoader::getProductImage($productIdFromDatabase) ?>" />
“/>

是。这行吗?不,这很好,但更好的方法是将图像保留在适当的位置,只在数据库中存储名称或ID:
这很好-只要您确保保存的图像名称已清理/规范化。在某些方面,这实际上是一种很好的做法。但是,我强烈建议您使用绝对URL,并将整个URL存储在DB@NicholasSummers存储绝对路径使您无法使用多个环境,也无法将数据库从prod同步到dev例如,哇,这是一个惊人的代码,tnx的建议这应该会让事情变得更简单