我正在尝试从数据库中选择一个简单的数据:

$stmt = $dbh->prepare("SELECT new_email FROM pending_emails WHERE userid=:userid AND type='email'");
$stmt->bindParam(":userid",$userdata["id"]);
$stmt->execute();
     $emailUpdateData = $stmt->fetchAll(PDO::FETCH_ASSOC);
            if(count($emailUpdateData) == 1){

                $emailUpdate = true;

     }


然后,我尝试使用$emailUpdateData像这样:

  echo $emailUpdateData["new_email"];


但这并没有返回任何东西。

如果我执行print_r,我会得到:

Array ( [0] => Array ( [new_email] => [email protected] ) )

最佳答案

fetchall返回始终将行数组作为记录集。想象一下,您的select返回了一个值列表,您将需要一个array来存储所有值,并在每个值中都包含key-> value。

因此,即使结果集只有一个结果,或者您在SQL语句中使用LIMIT子句限制了结果集,fetchall仍将始终返回一个数组。

在这种情况下,您需要以以下方式访问数组:

$emailUpdateData[0]["new_email"]


如果只想获取第一行,请替换fetchAll以获取

09-20 21:16