У меня есть строка с запятыми. Например:
$keywords = 'keyword1, keyword2, keyword3';
Схема My Table, названная tbl_address
, подобна этой (упрощенной):
id INT(11) PRIMARY KEY, AUTO INCREMENT
address VARCHAR(250) NOT NULL
Предположим, что я должен использовать MySQLi
в PHP (не PDO
).
Вот мой текущий подход:
$result = array();
$keyword_tokens = explode(',', $keywords);
foreach($keyword_tokens as $keyword) {
$keyword = mysqli_real_escape_string(trim($keyword));
$sql = "SELECT * FROM tbl_address WHERE address LIKE'%$keyword%'";
// query and collect the result to $result
// before inserting to $result, check if the id exists in $result.
// if yes, skip.
}
return $result;
Этот подход работает, но неэффективен по производительности. Если есть много ключевых слов, это вызовет много запросов.
Мой вопрос: есть ли лучший способ достичь той же цели? то есть самый простой способ вернуть все записи с адресом, содержащим ЛЮБОЕ из ключевых слов?