我在PHP中运行此PDO查询:
$stmt = $pdo_conn->prepare("SELECT * from contacts where email = :email ");
$stmt->execute(array(':email' => $from ));
$contact = $stmt->fetchAll(PDO::FETCH_ASSOC);
if(count($contact) > 0) {
echo $contact["email"];
}
但它没有回应联系人表格中的电子邮件列
我知道那里有一个值,好像我回应'是';在它显示的if语句中
我在这里做错了什么?
的var_dump($接触);示出了
array(1) { [0]=> array(22) { ["sequence"]=> string(3) "266" ["newsletter"]=> string(3) "yes" ["company_sequence"]=> string(3) "278" ["title"]=> string(2) "Mr" ["forename"]=> string(7) "Forename" ["surname"]=> string(4) "Surname" ["email"]=> string(22) "user@domain.com" ["password"]=> string(32) "**********" ["phone"]=> string(0) "" ["mobile"]=> string(11) "00000000000" ["notes"]=> string(0) "" ["contactstatus"]=> string(0) "" ["logintries"]=> string(1) "0" ["dob"]=> string(10) "0000-00-00" ["receive_allticketupdates"]=> string(3) "yes" ["receive_accountsemails"]=> string(3) "yes" ["can_edit_contacts"]=> string(3) "yes" ["view_all_tickets"]=> string(3) "yes" ["receive_orderemails"]=> string(0) "" ["can_login_online"]=> string(3) "yes" ["last_satisfaction_survey_received"]=> string(10) "0000-00-00" ["receive_domainemails"]=> string(0) "" } }
答案 0 :(得分:1)
似乎$contact
将包含一系列行。因此,您需要访问特定行的email
字段。像这样:
echo $contact[0]['email'];
或使用循环:
if (!empty($contact)) {
foreach ($contact as $thisContact) {
echo $thisContact['email'];
}
}
或者,使用fetchAssoc
代替fetchAll
:
while ($contact = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo $contact['email'];
}
答案 1 :(得分:1)
因为您正在使用fetchAll()
,所以即使只有一个结果,您也会收到一个二维结果数组。
要从中获得单一结果,您可以通过$contact[0]
来访问它:
echo $contact[0]['email'];
或者,如果您希望/期望单行,则可以使用fetch()
代替fetchAll()
:
$contact = $stmt->fetch(PDO::FETCH_ASSOC);
if(count($contact) > 0) {
echo $contact["email"];
}
答案 2 :(得分:0)
fetchAll
获取数组中的所有行,因此结果为多维数组。
您可能正在寻找echo $contact[0]["email"];
。