我在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语句更改为
return implode(array_unique($emailAddress));
这解决了问题,但必须有一个更好的方法来做到这一点。这似乎是非常基本的东西,我想做得对。怎么了?
答案 0 :(得分:0)
问题是fetch的默认响应类型是
PDO :: FETCH_BOTH(默认值):返回由结果集中返回的列名和0索引列号索引的数组
我也觉得这很混乱。
将参数fetch_style指定为PDO :: FETCH_ASSOC或PDO :: FETCH_OBJ以获得您期望的结果。
http://php.net/manual/en/pdostatement.fetch.php
希望这有帮助