2015-06-06 3 views
1

У меня есть следующие:MySQL с LIKE возвращения неправильно строку

$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'?

Я не настоящий новый, но я смущен. Спасибо за любую помощь, которую я получаю.

+0

Попробуйте выполнить '$ stmt-> execute (array ("% $ q% "));'. и проверить один раз –

ответ

1

Вы используете 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%")); 
1

Ваш текущий код только константа "% д%":

$stmt->execute(array("%q%")); 

Вам необходимо интерполировать $q переменную:

$stmt->execute(array("%$q%")); 
0

Я понял. Мой $stmt->execute(array("%q%")); имеет кавычки вместо засечек, как в:

$stmt->execute(array('%q%')); 

что делает его работать идеально.

Спасибо.