Как правильно сделать цикл поиска по БД?
Подскажите, как правильно реализовать поиск по БД:
в таблице есть ID объекта, ownerID - в какой папке лежит этот файл/папка (это нужно для отображения) и nameDir - название папки
Делаю запрос на поиск, этим запросом получаю Id папки в которой лежит файл, затем проверяю на условие, и если nameDir не соотвествует условию (названию папки) то мне нужно искать дальше - т.е я беру ownerID папки подставляю его в ID и нужно опять проверить на условие nameDIR
Подскажите, как нужно правильно это сделать в циклe, т.к. while почему то у меня не отрабатывает:
<?php
include "db_dev.php";
function foo($stroka)
{
include "db_dev.php";
$b_sql = "SELECT ownerID, ID, dirName FROM [Projects].[dbo].[Z_contents] WHERE ID = '$stroka'";
$b_query = sqlsrv_query($conndev, $b_sql); // выполяем запрос
if ($b_query == false) {
echo (sqlsrv_errors());
}
while ($b_row = sqlsrv_fetch_array($b_query, SQLSRV_FETCH_ASSOC)) {
$str = $b_row['dirName'];
$b_ownerID = $b_row['ownerID'];
return [$str, $b_ownerID];
}
}
$mask1 = 'изм';
$mask2 = 'рев';
$t_sql = " SELECT ownerID
FROM [CurProjects].[dbo].[Z_files]
WHERE fileDescr LIKE '20-000-А01%0.%' and fileDescr NOT LIKE '%pdf%'
GROUP by ownerID";
$query = sqlsrv_query($conndev, $t_sql); // выпонляем запрос
if ($query == false) {
echo (sqlsrv_errors());
}
while ($row_shifr = sqlsrv_fetch_array($query, SQLSRV_FETCH_ASSOC)) {
$ownerID = $row_shifr['ownerID'];
echo "<br> Ищем изм для :" . $ownerID;
[$str, $b_ownerID] = foo($ownerID);
if ($str != null) {
//$pos2 = stripos($str, $mask2);
while (stripos($str, $mask1) == true) // тут цикл, но он не работает
{
echo " Изм не найден, ищем в :" . $b_ownerID;
foo($b_ownerID);
[$str, $b_ownerID] = foo($ownerID);
}
}
}
sqlsrv_free_stmt($query);
sqlsrv_close($conndev);