我在 PHP 脚本中使用 mySQL 语句来返回给定用户的电子邮件地址。您将看到下面的函数:
public static function getEmailAddress($username) {
$conn = parent::connect();
$sql = "SELECT emailAddress FROM " . TBL_USERS . " WHERE username = '". $username ."';";
try {
$st = $conn->prepare($sql);
$st->bindValue("username", $username, PDO::PARAM_STR);
$st->execute();
$emailAddress = $st->fetch();
return $emailAddress;
parent::disconnect($conn);
} catch(PDOException $e) {
die("emailAddress lookup query failed: " . $e->getMessage());
}
}
这返回了一个包含两个元素的数组,两个元素都是正确的电子邮件地址。我将返回语句更改为
return implode(array_unique($emailAddress));
这解决了问题,但必须有更好的方法来做到这一点。这似乎是非常基本的事情,我想把它做好。怎么了?
最佳答案
问题是fetch的默认响应类型是
PDO::FETCH_BOTH(默认):返回按结果集中返回的列名称和 0 索引列号索引的数组
我也发现这很令人困惑。
将参数 fetch_style 指定为 PDO::FETCH_ASSOC 或 PDO::FETCH_OBJ 以获得您期望的结果。
http://php.net/manual/en/pdostatement.fetch.php
希望这有帮助
关于PHP mySQL 查询返回单个字段作为 2 元素数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32804339/