php - 连接到 MySQL 时这些错误是什么?
问题描述
我正在尝试在 PHP 中使用 PDO 制作用户注册系统,但无法连接到 MySQL 数据库。它总是说访问被拒绝,并且还有一些致命错误。
我尝试重置 MySQL 和 Internet 上可用的其他东西,但没有任何效果。
<?php
class userClass
{
/* User Login */
public function userLogin($usernameEmail, $password)
{
$db = getDB();
$hash_password = hash('sha256', $password);
$stmt = $db->prepare("SELECT uid FROM users WHERE (username=:usernameEmail or email=:usernameEmail) AND password=:hash_password");
$stmt->bindParam("usernameEmail", $usernameEmail, PDO::PARAM_STR);
$stmt->bindParam("hash_password", $hash_password, PDO::PARAM_STR);
$stmt->execute();
$count = $stmt->rowCount();
$data = $stmt->fetch(PDO::FETCH_OBJ);
$db = null;
if ($count)
{
$_SESSION['uid'] = $data->uid;
return true;
}
else
{
return false;
}
}
/* User Registration */
public function userRegistration($username, $password, $email, $name)
{
try{
$db = getDB();
$st = $db->prepare("SELECT uid FROM users WHERE username=:username OR email=:email");
$st->bindParam("username", $username,PDO::PARAM_STR);
$st->bindParam("email", $email,PDO::PARAM_STR);
$st->execute();
$count = $st->rowCount();
if ($count<1)
{
$stmt = $db->prepare("INSERT INTO users(username,password,email,name) VALUES (:username,:hash_password,:email,:name)");
$stmt->bindParam("username", $username,PDO::PARAM_STR);
$hash_password= hash('sha256', $password);
$stmt->bindParam("hash_password", $hash_password,PDO::PARAM_STR);
$stmt->bindParam("email", $email,PDO::PARAM_STR);
$stmt->bindParam("name", $name,PDO::PARAM_STR);
$stmt->execute();
$uid = $db->lastInsertId();
$db = null;
$_SESSION['uid'] = $uid;
return true;
}
else
{
$db = null;
return false;
}
}
catch(PDOException $e) {
echo '{"error":{"text":' . $e->getMessage() . '}}';
}
}
/* User Details */
public function userDetails($uid)
{
try{
$db = getDB();
$stmt = $db->prepare("SELECT email,username,name FROM users WHERE uid=:uid");
$stmt->bindParam("uid", $uid,PDO::PARAM_INT);
$stmt->execute();
$data = $stmt->fetch(PDO::FETCH_OBJ);
return $data;
}
catch(PDOException $e) {
echo '{"error":{"text":' . $e->getMessage() . '}}';
}
}
}
?>
这些是我得到的错误。
连接失败:SQLSTATE[HY000] [1045] 用户'root'@'localhost'的访问被拒绝(使用密码:否)
和
致命错误:未捕获的错误:在 C:\xampp\htdocs\auctionsystem\class\userClass.php:33 中调用成员函数 prepare() 堆栈跟踪:#0 C:\xampp\htdocs\auctionsystem\index.php (40): userClass->userRegistration('anurag', 'anurag123', 'anurag@email.co...', 'Anurag Pal') #1 {main} 在 C:\xampp\htdocs\auctionsystem\class 中抛出\userClass.php 在第 33 行
解决方案
连接失败:SQLSTATE[HY000] [1045] 用户'root'@'localhost'的访问被拒绝(使用密码:否)
这意味着您尝试连接到数据库,但无论出于何种原因拒绝连接
我不建议使用root,创建一个root以外的用户使用!
- 尝试确保您的用户帐户未设置为仅允许本地连接
- 设置您的用户帐户密码以匹配您提供的内容
- 检查您的防火墙是否限制了您的连接
- 确保您的 SQL 用户允许任何主机连接(由 % 标识)
推荐阅读
- amazon-web-services - 如何在 CodeDeploy 中设置和获取环境变量
- wix - MSI 安装程序失败并出现错误:程序集错误:参数不正确
- javascript - 角度js +类型脚本中的动态列表
- cryptography - 在单次卡片浸入中多次生成 ARQC
- angular - Angular 5 两次失败的 http 调用仅触发一次 catchError
- datetime-format - Azure 存储表 - DateTime 中的问题 - 格式
- c# - 在 C# 中,图像应保持在屏幕大小上的选项卡视图的中心
- angular - 从模板调用方法不起作用(Angular 5)
- python - Django,在异常上下文中翻译字段名称
- scala - repartionBy 的最佳策略,只有几个大分区