Я шифрую и дешифруя мою таблицу контактов MySQL в PHP. Все в порядке и все, но я делаю сетку данных так, чтобы у нее было единственное окно поиска, которое выполняет полный текстовый поиск по всем столбцам. Теперь проблема заключается в том, что поиск выполняется по зашифрованным данным, а не по исходным данным.PHP полный текстовый поиск по ассоциативному массиву
Так что я вынужден выполнять полный текстовый поиск на PHP. Это требует от меня повторения каждой строки, но я все равно делаю это, потому что мне нужно расшифровать ее.
Моя забота заключается в скорости, с которой мой код выполняет полный текстовый поиск, я хочу знать, есть ли лучший и быстрый способ сделать это?
$result = Some PDO query that does a PDO::FETCH_ASSOC, query has about 8 columns
$searchPhrase = strtolower($searchPhrase);
$aes = new AES(DATABASE_KEY, DATABASE_IV);
$count = count($result);
for($ii = 0; $ii <$count; $ii++)
{
$result[$ii]["ContactName"] = $aes->Decrypt($result[$ii]["ContactName"]);
$result[$ii]["ContactDescription"] = $aes->Decrypt($result[$ii]["ContactDescription"]);
/*More encrypted columns*/
if (!empty($searchPhrase)) //Only do search when search phrase not empty
{
$filterRow = array_slice($result[$ii], 3); // Do not take first 3 columns
$data = strtolower(implode("", $filterRow)); //Flaten row as one string, all lowercase
if (strpos($data, $searchPhrase) === FALSE) //Now doing elimentation from array if not match
unset($result[$ii]);
}
}
Хм, я все равно вниз кроличью нору вы предоставили. Выглядит очень интересно, посмотрит на него больше. –