Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用PDO连接到mysql的简单用户函数_Php_Database_Pdo - Fatal编程技术网

Php 使用PDO连接到mysql的简单用户函数

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

我仍处于早期学习阶段,用头撞墙寻找线索。我一直在读手册,但没有用

我正在基于phpAcadamy教程“注册和登录”(第5-2部分)构建一个用户登录系统。在本教程中,他们使用了
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';
}