gpt4 book ai didi

php - 如何返回 pdo 准备好的语句来检查用户是否存在,然后从数据库返回 id?

转载 作者:行者123 更新时间:2023-11-29 14:38:58 25 4
gpt4 key购买 nike

我正在尝试构建一个方法来检查用户是否存在,如果存在,则从数据库返回他们的 ID。过去我总是在查询后使用mysql_fetch_array,然后我会使用array_shift($result_array)来获取id。事实证明,这对准备好的陈述来说是一个挑战。看一下我的方法:

<?php
require_once("db.php");

class User extends Database{

public $dbFields = array('username', 'password');

public $tableName = "users";
public $id;
public $username;
public $password;

// public function auth($user, $pass){
// $this->username = $user;
// $this->password = $pass;

// }

public function authenticate($username = '', $password = ''){
if(!empty($username) && !empty($password)){
$stmt = "SELECT * FROM users ";
$stmt .= "WHERE username =:username ";
$stmt .= "AND password =:password ";
$stmt = $this->db->prepare($stmt);
if($result = $stmt->execute(array(':username' => $username, ':password' => $password))){
if ($result = $stmt->fetch(PDO::FETCH_ASSOC)){
return $result;
} else {
return print("false");
}
}else{
return print("false false");
}
}
}
}
?>

这可能不相关,但这是表单页面:

if (isset($_POST['submit'])){
$username = $_POST['username'];
$password = $_POST['password'];
$user = new User();
$user->authenticate($username, $password);

}
?>
<html>
<head>
<title>test</title>
</head>
<body>
<form action = "test.php" method= "POST" accept-charset="utf-8" >
<p>Username
<input type="text" name="username" maxlength="30" value="" />
</p>
<p>Password
<input type="password" name="password" maxlength="30" value="" />
</p>
<p><input type="submit" name="submit" value="Continue &rarr;"></p>
</form>

</body>
</html>

我已经在所有其他数据库方法上成功使用了 pdo,所以如果可以的话,我真的不想切换回标准 mysql 语句。有什么建议吗?

编辑:按照 Chris 的建议更改了执行数组中的语法。

最佳答案

php 不会扩展由单引号分隔的字符串中的变量。

使用类似的东西

array(':username' => $username, ':password' => $password)

除此之外,您的变量 $result 是一个关联数组,就像您习惯的那样。

return $result['id'];

注意,打印函数返回值 1。我真的不认为您希望从验证函数返回该值。你如何判断 1 是某人的用户 ID,还是 print 的返回值?返回 bool 值 false 来代替指示失败。

关于php - 如何返回 pdo 准备好的语句来检查用户是否存在,然后从数据库返回 id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8389557/

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