2015-05-11 6 views
1

Я создал поле, которое автоматически заполняется при вводе слова. Он делает запрос с mysql PDO. Моя просьба сделана на последнем имени пациента. Это работает хорошо.Извлечение нескольких столбцов

Теперь я хотел бы отобразить первое имя после последнего.

Моя функция заключается в следующем:

function searchForKeyword($keyword) { 
    $db = connect(); 
    $stmt = $db->prepare("SELECT lastname_patient, firstname_patient FROM `patients` WHERE lastname_patient LIKE ? ORDER BY lastname_patient"); 

    $keyword = $keyword . '%'; 
    $stmt->bindParam(1, $keyword, PDO::PARAM_STR, 100); 

    $isQueryOk = $stmt->execute(); 

    $results = array(); 

    if ($isQueryOk) { 
     $results =$stmt->fetchAll(PDO::FETCH_COLUMN); 
    } else { 
     trigger_error('Error executing statement.', E_USER_ERROR); 
    } 

    $db = null; 

    return $results; 
} 

Я думаю, что проблема с этой линией $results =$stmt->fetchAll(PDO::FETCH_COLUMN); Это принести только один столбец.

Как изменить это, чтобы отобразить первое имя пациента после его последнего имени? (Ведение поиск по LastName)

+0

'Чтобы вернуть массив, состоящий из всех значений одного столбца из набора результатов, укажите PDO :: FETCH_COLUMN. Вы можете указать, какой столбец вы хотите с параметром index-index. 'Поэтому зачем использовать' PDO :: FETCH_COLUMN'? Почему бы не использовать 'PDO :: FETCH_ASSOC'? –

ответ

0

Эффективно выполнить один выборка один раз.

$results = array(); 
if ($isQueryOk) { 
     while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 
     array_push($result, $row['lastname_patient'].' '.$row['firstname_patient']); 
     } 
} else { 
     trigger_error('Error executing statement.', E_USER_ERROR); 
} 
1

Попробуйте
          fetchall (PDO :: FETCH_ASSOC) вместо fetchAll (PDO :: FETCH_COLUMN).

PDO :: FETCH_ASSOC даст вам весь результат, который вы хотите получить в одном ассоциативном массиве.

Смежные вопросы