У меня есть пользовательский запрос и база данных. Моя база данных содержит таблицы. Мне интересно узнать, является ли мой метод запросов к базе данных. То, что я имею в виду это:PHP Искать несколько слов в запросе по таблице базы данных
- Отдельный запрос в массив разделяется пробелом
- Loop через каждое слово и сделать LIKE «% {$ слово}%» ИЛИ
- Выше этого просто перед каждой итерацией делать «И»
Проблема в том, что она работает неправильно. Его не накладывать на точные электронные письма, которые соответствуют моим запросам. Вот мой код:
$i=0;
$userQuery = $_POST['q']; // q = "Jonathan gmail"
$sql = "SELECT * FROM addresses WHERE ";
$parts = explode(' ',$userQuery);
$cnt=count($parts);
foreach($parts as $part){
$part = mysql_real_escape_string($part);
if($i!==$cnt-1){
$sql.="(
addresses.name LIKE '%".$part."%' OR
addresses.localpart LIKE '%".$part."%' OR
addresses.domain LIKE '%".$part."%'
) AND
";
} else {
$sql.="(
addresses.name LIKE '%".$part."%' OR
addresses.localpart LIKE '%".$part."%' OR
addresses.domain LIKE '%".$part."%'
)
";
}
$i++;
}
}
Мой вопрос в том, что случилось с этой логикой? Это кажется точным.
А где вопрос? Чего вы пытаетесь достичь? – Mifeet
И не могли бы вы предоставить '$ userQuery', который не работает с вашим кодом? –
Готово. Добавлено вопрос и запрос – jkushner