gpt4 book ai didi

php - 在数据库中使用 PDO 准备语句进行 SELECT 检查是否有任何结果

转载 作者:行者123 更新时间:2023-11-30 22:43:38 25 4
gpt4 key购买 nike

<?php

//我想做一个登录页面

//This my logon.php 它从我的login.php 中获取数据并检查(username,password)given 是否存在于我的数据库中,如果存在,它允许您继续查看我的index.php。

//我想用 PDO 准备好的语句来做。

//这是我与数据库的连接

$db_host="localhost";
$db_username="root";
$db_pass="";
$db_name="admin";

$db=new mysqli("$db_host","$db_username","$db_pass","$db_name");

echo $db->connect_errno;

if($db->connect_errno){
die("sorry we have some problems");

}

if($_SERVER ['REQUEST_METHOD']=='POST'){

$username=$_POST['username'];
$password=$_POST['password'];

$username=htmlspecialchars($username);
$password=htmlspecialchars($password);

//这里我尝试检查我的数据库是否存在给定的用户名和密码并以某种方式检查我是否有任何结果。如果我有 1,2,3...行与用户名和密码匹配

//这就是我想用 PDO 做的...请帮助!

        $pdo->prepare$sql=('SELECT * FROM members WHERE username = :username and password = :password' );
$pdo->execute(array(':username' => $username, ':password'=>$password));

//如果我从我的数据库中得到任何结果,这就是我想做的事情

        if($result){
$num_rows=mysqli_num_rows($result);
if($num_rows>0){
session_start();
$_SESSION['check']="1";
header ("Location:index.php");
}
else{
session_start();
$_SESSION['check']="";
header ("Location:index.php");

}
}

}





?>

最佳答案

这两行乱七八糟:

$pdo->prepare$sql=('SELECT * FROM members WHERE username = :username and password = :password' );
$pdo->execute(array(':username' => $username, ':password'=>$password));

首先,我们没有看到您创建了 PDO 连接。有一个 mysqli 连接。选择 PDO 或 mysqli,您不能混合使用这两个库中的函数。

PDO prepare 函数/方法返回一个语句对象 PDOStatement

PDOstatement 对象有一个execute 函数/方法。

try {
$pdo = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
$sql = "select ... ";
$sth=$pdo->prepare($sql);
$sth->execute(...);

您可能想查看文档中的示例,例如

http://php.net/manual/en/pdostatement.execute.php

如果您想知道查询是否返回一行,您可以简单地从中获取数据,并测试它是否返回 FALSE。

$row = $sth->fetch(PDO::FETCH_ASSOC);

还有这一行:

mysqli_num_rows($result);

$result 尚未分配值。同样,您不能混合使用 PDO 和 mysqli 的函数。这是两个不同的接口(interface)库。


以纯文本形式存储密码是一个非常糟糕的主意。

关于php - 在数据库中使用 PDO 准备语句进行 SELECT 检查是否有任何结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30304757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com