我正在尝试从我的数据库中选择一个简单的数据:
$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 ) )
答案 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