如何在自己的数组中存储从SELECT返回的多个变量 - PDO

时间:2017-04-27 15:32:40

标签: php mysql arrays pdo

我将所有旧的mysql代码重写为PDO代码,但我不能想到一种方法来存储从SELECT返回的多个变量到自己的数组中。

我可以将一组值放在一个新数组中,如下所示:

$stmt1 = $db->prepare("SELECT P_ID 
    FROM personal 
    WHERE personal.firstname=:firstname
    AND personal.lastname=:lastname");

// Bind 
// Execute
// Fetch 

// Store
    if ($row) 
      {
            foreach ($row as $key) 
            {
              $PIDs[] = $key;
            }
      }

但在此查询中,我想在不同的数组中添加名字第二名:

$stmt2 = $db->prepare("SELECT FirstName, LastName
FROM personal");

在我正在做的mysql中:

while ($row = mysql_fetch_array($result)) 
     {
        $firstnames[] = $row[0];
        $lastnames[] = $row[1];
     }

有人可以帮忙吗?我找到的每个样本PDO SELECT只能处理一个返回的字段。

2 个答案:

答案 0 :(得分:1)

假设您的语句$stmt中有fetch个数据:

$stmt2 = $db->prepare("SELECT FirstName, LastName FROM personal");
$stmt2->execute();

while ($row = $stmt2->fetch(PDO::FETCH_ASSOC)) 
{
    $firstnames[] = $row['FirstName'];
    $lastnames[] = $row['LastName'];
}

答案 1 :(得分:1)

您想设置PDO fetch mode,以便您可以按名称引用2D数组,然后获取所有行。

$stmt = $dbh->query($sql);
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$result = $stmt->fetchAll();

可以找到更多信息here

然后您可以使用array_column,可以找到更多信息here;

$firstNames = array_column($result, 'FirstName');
$lastNames = array_column($result, 'LastName');