获取多个列

时间:2015-05-11 07:08:58

标签: php mysql pdo

我创建了一个在输入单词部分时自动完成的字段。它使用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); 它只获取一列。

如何更改此项以在姓氏后显示患者的名字? (按姓氏保持搜索)

3 个答案:

答案 0 :(得分:1)

尝试
fetchall(PDO :: FETCH_ASSOC)而不是fetchAll(PDO :: FETCH_COLUMN)。

PDO :: FETCH_ASSOC将在一个关联数组中为您提供所需的所有结果。

答案 1 :(得分: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);
}

答案 2 :(得分:0)

在查询中使用CONCAT:

SELECT CONCAT(lastname_patient, ', ', firstname_patient) as fullname 
FROM patients
WHERE lastname_patient LIKE ? 
ORDER BY lastname_patient