如何读取PDO :: FETCH_ASSOC-使用execute();并修复错误

问题描述 投票:0回答:1

好吧,我正在尝试开发一个程序,您需要了解什么:

$sql = $conn->prepare("SELECT NationID FROM Users WHERE UserEmail = '{email here}' AND 'NationPassword' = '{password here}'");
$sql->execute();
$result = $sql->setFetchMode(PDO::FETCH_ASSOC);
echo $result

最大的问题是该表具有以下内容:

“ NationID”:“ 8”“ NationName”:“ Kharim”“ UserEmail”:“ {在这里发电子邮件}”“ NationPassword”:“ {此处输入密码}”“ NationLocation”:“非洲”

但是我只想要NationID,我该如何处理。 (另一个错误,我认为可以由某个解释此问题的人解决,当前回显$ result字面意思只是返回“ 1”。因此,如果有人可以向我解释如何只读取其中的特定部分,而不是整个表,-使$ result不返回“ 1”将是惊人的。谢谢*旁注:只是为了避免您认为这是错误,{email here}和{password here}都代表我想隐藏的真实信息。*

php sql pdo
1个回答
1
投票

代替setFetchMode()和fetchColumn(),您可以尝试如下操作。

$stmt = $conn->prepare("
    SELECT `NationID` 
    FROM `Users` 
    WHERE `UserEmail`:email 
    AND `NationPassword`=:password
");

// Assign the values to the placeholder
$stmt->bindValue(':email', $email); 
$stmt->bindValue(':password', $password);
$stmt->execute();

// Fetch possible result and return it as array
$result = $stmt->fetch(PDO::FETCH_ASSOC);

// Check if we have a result and print out
if (!empty(result)) {
    echo $result['NationID'];
} else {
    echo "No related entry";
  1. 使用反引号(`)代替表/列名称的单引号。
  2. 当使用准备好的语句时,不要直接在查询中传递值,而应通过方法bindValue()bindParam()传递它。
© www.soinside.com 2019 - 2024. All rights reserved.