将数据库中的图像也从数据库中获取内容

时间:2015-05-02 10:48:32

标签: php database image

可怕的头衔,但我不知道如何以不同的方式描述它:3

基本上,对于我们的学校项目,我们必须从数据库中获取所有页面内容。所以我已将内容输入数据库并创建了一个功能,将其粘贴到我的页面上。我遇到的问题是我也从不同的表中获得了一些图像。

我的页面是使用

输入的
<?php echo $row['page_content']; ?>

因此,对于我以前做过类似事情的图像是在页面内:

<div class="col-md-4 col-sm-4 col-xs-height">
    <a href="portfolio-item">
        <img class="img-responsive img-portfolio img-hover" src="<?php echo getImage(6); ?>" alt="">
    </a>
</div>

显然,回声中的回声并没有起作用,但我不知道如何解决这个问题。它不像我可以像在较小的文本片段中那样简单地对其进行分隔,例如:

echo "test text". $row['image'] . "moretext";

有没有办法做到这一点,或者我只需要输入图像的直接链接。我的意思是页面内容无论如何都在数据库中,但我更喜欢将它们放在一个单独的表中

编辑: 这些是我用来获取内容和图像的功能:

function getContents(){
    $conn = new PDO('mysql:host='. DB_HOST .';dbname='. DB_NAME . ';', DB_USER, DB_PASS);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);

    if(isset($_GET['page'])){
        $page = $_GET['page'];
    }else{
        $page = 1;
    }

    $sql = "SELECT * FROM pages WHERE page_ID = :page";
    $sth = $conn->prepare($sql);
    $sth->bindParam(':page', $page, PDO::PARAM_INT);
    $sth->execute();
    $row = $sth->fetch();
    return $row;
}

function getImage($image){
    $conn = new PDO('mysql:host='. DB_HOST .';dbname='. DB_NAME . ';', DB_USER, DB_PASS);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);

    $sql = "SELECT * FROM images WHERE image_ID = :image";
    $sth = $conn->prepare($sql);
    $sth->bindParam(':image', $image, PDO::PARAM_INT);
    $sth->execute();
    $row = $sth->fetch();
    return $row['image_url'];
}

1 个答案:

答案 0 :(得分:3)

一种方法是以某种方式用特殊语法在页面文本中标记图像,然后在输出之前处理它。例如,您可以将{{ing:n}}插入到内容中,以便稍后用第n个图像的链接替换。我们假设你选择了语法<?php echo getImage(n); ?> :)(你绝对不应该这样做)。

然后通过以下函数传递的内容应该包含图像链接:

function insertImages($content)
{
    return preg_replace_callback('/<\?php echo getImage\(([0-9]+)\); \?>/', function($match) {
        return getImage($match[1]);
   }, $content);
}