使用PHP从MySQL数据库的文件夹中查找文件名

时间:2019-09-25 15:26:27

标签: php mysql character-encoding

我使用PHP来检索文件夹中文件的名称: while(false!==($ entry = readdir($ handle)))

对于每个$ entry,我要检查一个MySQL数据库,是否存在带有该$ entry的记录。

它适用于不带特殊字符的普通字符串,但不适用于以下文件:AdigûzelElbinur21.03.2001.jpg,TruöngNgocMai13.09.2009.jpg,...

我的MySQL数据库,表和字段正在使用utf8_general_ci。我在一个视图中搜索,该视图创建了两个表的联合(全部为utf8_general_ci)。

据我所知,带有特殊字符的文件名采用UTF-8编码,我的PHP文件也是如此。

此脚本在PHP版本7.3.9的Centos 7服务器上运行。

我尝试检测字符串是否为UTF8并进行转换,但这没用。

这适用于普通文件名:

while (false !== ($entry = readdir($handle))) {
  if($entry !=='.' && $entry !=='..' && $entry !== '__MACOSX'){
    echo "<div class=\"bold\">$entry</div>";
    $sqlentry = mysqli_real_escape_string($link, $entry);
    $query = "select pointer from vwLeerlingenFotosNaarSmartschool where zoekstring  = '$sqlentry'";
  }

}

我还尝试将视图vwLeerlingenFotosNaarSmartschool中的数据加载到数组中

$query  = "select distinct pointer from vwLeerlingenFotosNaarSmartschool";
                                        $result = mysqli_query($link, $query);

                                        $arr_pointer = array();
                                        while($row = mysqli_fetch_assoc($result)){
    $pointer = $row['pointer'];
    $arr_pointer[$pointer] = $row['zoekstring'];
                                        }

使用

搜索$ arr_pointer时
var_dump(in_array($entry, $arr_pointer));

它也找不到字符串。

如何确保文件名使用正确的编码,可以在数据库(或数组)中找到。

0 个答案:

没有答案