Php Pdo的显示结果

Php Pdo的显示结果,php,mysql,pdo,Php,Mysql,Pdo,您好,我有一个小问题,我正在尝试将pdo查询的两个结果放在最上面并打印出来,但没有这样的运气,我可能只是犯了一个愚蠢的错误,我没有看到查询似乎被找到了,所以如果名称在数据库中,它确实会有所不同(如果你把它放在引号中,它会有所不同)可能变量得到的是空值或其他什么 $username="xxx"; $firstname="xxx"; $check=0; if (isset($_GET['u'])){ $username=strip_tags(@$_GET['u']);

您好,我有一个小问题,我正在尝试将pdo查询的两个结果放在最上面并打印出来,但没有这样的运气,我可能只是犯了一个愚蠢的错误,我没有看到查询似乎被找到了,所以如果名称在数据库中,它确实会有所不同(如果你把它放在引号中,它会有所不同)可能变量得到的是空值或其他什么

$username="xxx";
$firstname="xxx";
$check=0;
    if (isset($_GET['u'])){
        $username=strip_tags(@$_GET['u']);
        if (ctype_alnum($username)){
            $check=$stmt=$link->prepare("SELECT * FROM
users WHERE username = ?");
            $stmt->execute(array($username));
            $check=$stmt->fetchAll();
            if(count($check)==1){
                $get=$stmt->fetch(PDO::FETCH_BOTH);
                echo "$get";
                $username =$get["username"];
                $firstname = $get["first_name"];
            }else{
                echo "<h2> User does not exist!</h2>";
                exit();
            }
        }
    }
?>
<h2>Profilepage for: <?php echo "$username"; ?></h2>
<h2>First name: <?php echo "$firstname"; ?></h2
$username=“xxx”;
$firstname=“xxx”;
$check=0;
如果(isset($\u GET['u'])){
$username=strip_标记(@$_GET['u']);
if(ctype_alnum($username)){
$check=$stmt=$link->prepare(“选择*FROM
用户名为“?”的用户;
$stmt->execute(数组($username));
$check=$stmt->fetchAll();
如果(计数($check)==1){
$get=$stmt->fetch(PDO::fetch_两者);
回显“$get”;
$username=$get[“username”];
$firstname=$get[“first_name”];
}否则{
echo“用户不存在!”;
退出();
}
}
}
?>
个人资料页,用于:
名字:
$stmt->fetchAll()
正在获取查询的所有结果。完成此操作后,
$stmt->fetch()
将不再有可用于提取的结果。您应该从
$check
数组中获取数据

if (count($check) == 1) {
    $get = $check[0];
    $username = $get["username"];
    $firstname = $get["first_name"];
} else {
    echo "<h2> Username does not exist </h2>";
    exit();
}

而且,
echo“$get”
没有任何意义
$get
是一个数组,您不能回显它,您需要使用
打印($get)
变量转储($get)

警告:使用错误抑制
@
操作符可以掩盖代码的问题,并使类似的调试问题变得更加复杂。这是最后手段,只能在特殊情况下使用。您应该为用户显示错误消息、记录问题、启动某种重试,或者同时执行所有这些操作。警告:编写自己的访问控制层并不容易,而且有很多可能会出现严重错误。请不要编写您自己的身份验证系统,因为任何现代的同类产品都具有强大的内置功能。至少绝对不要将密码存储为纯文本。字段用户名是唯一的?是的,usename是唯一的,但我这样做只是为了获得一些经验,大多数数据应该加密对我来说是清楚的。我只是想在不同的方法之间切换一点,真正了解我的东西是如何工作的,但谢谢你的建议
$stmt->execute(array($username));
$get = $stmt->fetch(PDO::FETCH_ASSOC);
if ($get) {
    $username = $get["username"];
    $firstname = $get["first_name"];
} else {
    echo "<h2> Username does not exist </h2>";
    exit();
}