2013-11-18 4 views
0

У меня есть папка unit_images, которая полна изображений со случайными именами, кроме префикса, который соответствует PRIMARY KEY в таблице db.PHP синтаксис, эквивалентный SQL%

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 где единица является один в настоящее время shown.I просто не знаю, как сказать PHP имя файла. Я хочу сделать что-то похожее на 1_% в SQL. Имеет ли это смысл? Поскольку я не знаю, как выглядит остальное имя файла, мне просто нужно сказать, что php это не имеет значения.

+1

Итак, я думаю, вы не сохранили строку файла после 'id' в своей базе данных, правильно? –

+0

Ваш '$ query' уязвим для [sql injection] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php?rq=1). Для вашей собственной безопасности вы хотите исправить это, прежде чем принимать этот код вживую. – Dan

ответ

1

Ближайший эквивалент шаблону % SQL, который работает для файлов, представляет собой шаблон оболочки *, который доступен в php через the glob() function. Вы можете перебирать его результатов следующим образом:

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

Мой совет будет хранить полное имя файла в столбце, так что вы можете ссылаться на него непосредственно, вместо того, чтобы искать в файловой системе для согласования имя.

Сказав это, вы можете искать файл, используя функцию PHP glob.

Может быть, вы можете сделать что-то вроде этого:

glob("unit_images/<YOUR_PRIMARY_KEY>_*.{png,jpg}", GLOB_BRACE); 
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]

Смежные вопросы