使用 PHP 显示单独的列值

Posted

技术标签:

【中文标题】使用 PHP 显示单独的列值【英文标题】:Displaying Separate Column Values with PHP 【发布时间】: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 列之间是什么关系? 【参考方案1】:

这是查询...

foreach($dbh->query('SELECT REPLACE("'.$image.'", "'.$image.'", name) basename, name FROM media, artists where media.id = artists.id') as $row) 

您应该可以在此处看到以下字段:“basename”和“name”。如果你用这个打印“basename”......

$output = '<h6 class="text2">'.$row['basename'].'</h6>';

然后用这个打印“名字”...

$output = '<h6 class="text2">'.$row['name'].'</h6>';

【讨论】:

以上是关于使用 PHP 显示单独的列值的主要内容,如果未能解决你的问题,请参考以下文章

如何在嵌入中显示用户的列值?

如何在 SQL 中显示某一行的列值?

MySQL Select 首先显示特定的列值

如何在熊猫中显示类似空字符串的列值的计数

Laravel/VueJs。如何根据传入的列值显示不同颜色的按钮?

SQL返回重复的列值