【发布时间】:2020-03-05 11:35:45
【问题描述】:
我目前正在尝试将数据库名称与图像文件名关联起来,到目前为止我已经成功地做到了这一点。但是,当我尝试将这些名称放在图像顶部时,它只使用最后一组名称并将其放在所有图像上。这不是我想要做的。
我希望能够获取一个文件名,在数据库中找到它,然后将其替换为与该帖子对应的名称。 (我的情况是他们是艺术家,所以如果文件名是 original-5192eef6f06cc.jpg,我会将其替换为 This Super Cool Band Name,并覆盖在单个图像。
这是我的代码
<?php
$hostname="localhost";
$username="root";
$password="";
$db = "sbp old 2";
$imagesDirectory = "images/";
if(is_dir($imagesDirectory))
{
$opendirectory = opendir($imagesDirectory);
while (($image = readdir($opendirectory)) !== false)
{
if(($image == '.') || ($image == '..'))
{
continue;
}
$imgFileType = pathinfo($image,PATHINFO_EXTENSION);
$string = "600x600";
if(strpos($image, $string) !== false) {
}
else if(($imgFileType == 'jpg') || ($imgFileType == 'png') || ($imgFileType == 'jpeg')) {
$dbh = new PDO("mysql:host=$hostname;dbname=$db", $username, $password);
foreach($dbh->query('SELECT REPLACE("'.$image.'", "'.$image.'", name) basename, name FROM media, artists where media.id = artists.id') as $row) {
$output = '<h6 class="text2">'.$row['basename'].'</h6>';
}
echo '<div class="img-container">';
echo "<a href='images/".$image."'><img src='images/".$image."' class='actimage' width=300' height='300'></a>";
echo "<a href='images/".$image."'>";
echo '<div class="overlay">';
echo '<h6 class="text">'.$image.'</h6>'; //FileName Text
echo '<h6 class="text2">'.$output.'</h6>'; //FileName Text
echo '</div>';
echo '</a>';
echo '</div>';
}
}
closedir($opendirectory);
}
?>
处理文本查找和替换的部分是:
$dbh = new PDO("mysql:host=$hostname;dbname=$db", $username, $password);
foreach($dbh->query('SELECT REPLACE("'.$image.'", "'.$image.'", name) basename, name FROM media, artists where media.id = artists.id') as $row) {
$output = '<h6 class="text2">'.$row['basename'].'</h6>';
}
有人可以帮我吗?
谢谢
【问题讨论】:
-
这很不清楚您要做什么,并且缺乏适当的缩进也无济于事。为什么要用相同的文本替换文本?为什么要从两个表中选择?这两个表上的
id列之间是什么关系?