Php 使用PDO连接到mysql的简单用户函数
我仍处于早期学习阶段,用头撞墙寻找线索。我一直在读手册,但没有用 我正在基于phpAcadamy教程“注册和登录”(第5-2部分)构建一个用户登录系统。在本教程中,他们使用了Php 使用PDO连接到mysql的简单用户函数,php,database,pdo,Php,Database,Pdo,我仍处于早期学习阶段,用头撞墙寻找线索。我一直在读手册,但没有用 我正在基于phpAcadamy教程“注册和登录”(第5-2部分)构建一个用户登录系统。在本教程中,他们使用了mysql\u connect(),但我使用的是用于mysql的PDO连接 我正在创建我的第一个函数,user\u exists(),它根据用户名是否在数据库中返回true或false。 当username=发布的$username时,它会查询用户id(数据库中的一个自动递增值),然后根据用户id==1返回true或fals
mysql\u connect()
,但我使用的是用于mysql的PDO
连接
我正在创建我的第一个函数,user\u exists()
,它根据用户名是否在数据库中返回true
或false
。
当username
=发布的$username
时,它会查询用户id
(数据库中的一个自动递增值),然后根据用户id==1
返回true
或false
以下是我的测试代码:
底部的if语句应该测试它上面的函数
我遇到一个致命错误:对非对象调用成员函数query()
您需要将连接对象($db
)引入函数的作用域
这里有一个例子
function user_exists(PDO $db, $username) {
$stmt = $db->prepare('SELECT COUNT(1) FROM `users` WHERE `username` = ?');
$stmt->bindParam(1, $username);
$stmt->execute();
return (bool) $stmt->fetchColumn();
}
$host = "localhost";
$username = "mholberg_skroovy";
$password = "omitted";
$dbname = "mholberg_skroovytest";
$db = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8",
$username, $password);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
if (user_exists($db, 'junkomatic')) {
echo 'exists';
}
是吗?在第2行中,字面上应该是a?它仍然没有回声存在,我只是得到一个空白页。但它确实存在!是的,它是一个语句参数占位符。该用户名是否存在?是的,它位于该数据库用户表的用户名列中。它的用户id为1,我知道它的连接很好,因为我可以从中打印其他基本查询。哦!我一定错过了准备好的查询的执行!现在工作。非常感谢!
function user_exists(PDO $db, $username) {
$stmt = $db->prepare('SELECT COUNT(1) FROM `users` WHERE `username` = ?');
$stmt->bindParam(1, $username);
$stmt->execute();
return (bool) $stmt->fetchColumn();
}
$host = "localhost";
$username = "mholberg_skroovy";
$password = "omitted";
$dbname = "mholberg_skroovytest";
$db = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8",
$username, $password);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
if (user_exists($db, 'junkomatic')) {
echo 'exists';
}