У меня есть следующее:
$q = "w0";
$stmt = $db_found->prepare("SELECT DISTINCT callsign FROM NetLog WHERE callsign LIKE ?");
$stmt->execute(array("%q%"));
$result = $stmt->fetchAll();
$print_r($result);
Возвращает:
Array
(
[0] => Array
(
[callsign] => KA0QIG
[0] => KA0QIG
)
)
Так что пошло не так? Почему я получаю только один возврат, когда в БД много значений для позывного с ‘w0’?
Ты используешь select distinct
без подстановочных знаков. Таким образом, вы можете получить не более одного значения.
Возможно, вы имеете в виду что-то вроде этого:
$q = "%w0%";
$stmt = $db_found->prepare("SELECT DISTINCT callsign FROM NetLog WHERE callsign LIKE ?");
$stmt->execute($q);
$result = $stmt->fetchAll();
$print_r($result);
Ваша версия просто искала букву «д».
Мне приходит в голову, что вы хотели:
$stmt->execute(array("%$q%"));
Ваш текущий код — это просто константа «% q%»:
$stmt->execute(array("%q%"));
Вы должны интерполировать $q
переменная:
$stmt->execute(array("%$q%"));
Я понял. мой $stmt->execute(array("%q%"));
имеет кавычки вместо галочек, как в:
$stmt->execute(array('%q%'));
Что делает его идеальным.
Благодарю.