PHP语法等同于SQL%

时间:2013-11-18 02:04:55

标签: php mysql sql

我有一个文件夹unit_images,其中包含随机名称的图像,但它们的前缀与db表中的PRIMARY KEY相对应。

1_4534534fw4.jpg

2_43534tw4t45.png

你明白我的观点。我正在使用YoxView查看图像,我正在做这样的事情:

<?php
$query = "SELECT id FROM images WHERE unit = ".$_GET['id']."";
$result = mysqli_query($con, $query);
echo '<div class="yoxview">';
while ($row = mysqli_fetch_assoc($result))
{
    echo '<img src="unit_images/01.jpg" alt="First" title="First image" />
    <img src="unit_images/02.jpg" alt="Second" title="Second image" />'
}
echo '</div>';
?>

我想列出我的文件夹unit_images中的图像。该单元是当前正在显示的单元。我只是不知道如何告诉PHP文件名。我想在SQL中执行类似于1_%的操作。那有意义吗?因为我不知道文件名的其余部分是什么样的,所以我只需要告诉php它并不重要。

3 个答案:

答案 0 :(得分:1)

与文件适用于文件的%通配符最接近的是shell的*通配符,可通过the glob() function在php中找到。您可以按如下方式迭代其结果:

foreach (glob("unit_images/1_*.jpg") as $filename) {
  echo '<img src="unit_images/' . htmlspecialchars(basename($filename)) 
     . '" />';
}

答案 1 :(得分:1)

如果我理解正确,您希望获得具有特定前缀的目录中的项目列表。 步骤1(使用sandir()确定目录中的项目):

$files = scandir('unit_images');

步骤2(消除不需要的图像名称):

for ($i=0; $i<count($files); i++)
{
    $file = $files[i];
    $prefix = explode("_", $file)[0];
    if ($prefix != $_GET['id'])
    {
        unset($files[i]);
    }
}

$files现在只是一个前缀为$_GET['id]的文件名数组

答案 2 :(得分:0)

我的建议是将文件的全名存储在一列中,以便您可以直接引用它,而不必在文件系统中搜索匹配的名称。

话虽如此,您可以使用glob PHP函数搜索文件。

也许你可以这样做:

glob("unit_images/<YOUR_PRIMARY_KEY>_*.{png,jpg}", GLOB_BRACE);