PHP PDO - Fetchall不会打印出值

时间:2016-01-05 16:51:20

标签: php mysql sql pdo

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

$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] => support@hotmail.com ) )

3 个答案:

答案 0 :(得分:0)

fetchAll()返回一组行;使用fetch()返回一行。

您还应该在查询中添加LIMIT 1以获得良好的衡量标准。

答案 1 :(得分:0)

更改此行:

$emailUpdateData = $stmt->fetchAll(PDO::FETCH_ASSOC);

$emailUpdateData = $stmt->fetch(PDO::FETCH_ASSOC);

fetch()返回1行,fetchAll()返回所有行。

答案 2 :(得分:0)

fetchall总是返回一个行数组作为记录集。想象一下,你的select会返回一个值列表,你需要和array来存储它们的所有值,并在每个值中包含key->值。

所以,fetchall将总是返回一个数组,即使结果集只有一个结果,或者你在带有LIMIT子句的SQL语句中限制它。

在这种情况下,您需要以

的形式访问数组
$emailUpdateData[0]["new_email"]

如果您只想获得第一行,请将fetchAll替换为fetch