首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PDO连接mysql的简单user_exists函数

使用PDO连接mysql的简单user_exists函数
EN

Stack Overflow用户
提问于 2013-04-29 02:14:20
回答 1查看 399关注 0票数 0

我还在早期学习阶段,把头撞在墙上寻找线索。Iv一直在阅读手册,但没有结果。

我正在构建一个基于phpAcadamy教程‘Register&Login’的用户登录系统(第5-2部分)。在本教程中,他们使用mysql_connect(),但我使用的是mysql的PDO连接。

我正在创建我的第一个函数user_exists(),它returnstrue还是false,这取决于用户名是否在数据库中。当user_id = POSTed $username然后根据user_id == 1返回truefalse时,它会查询user_id == 1(db中的一个自动递增的值)。

下面是我的测试代码:底部的if语句应该测试上面的函数。

我得到一个致命的错误:调用非对象上的成员函数query()

代码语言:javascript
复制
    <?php

    $host       = "localhost";
    $username   = "mholberg_skroovy";
    $password   = "omitted";
    $dbname     = "mholberg_skroovytest";


$db = new PDO("mysql:host={$host};dbname={$dbname};", $username, $password);


function user_exists($username) {
    $query = $db->query("SELECT `users`.`user_id` FROM `users` WHERE `username` = '$username'");
    return(mysql_result($query, 0) == 1) ? true : false;                //???
}



if (user_exists('junkomatic') === true) {
    echo 'exists';
}
die();
?>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-29 02:18:33

您需要将连接对象($db)带入函数的作用域。

下面是一个例子

代码语言:javascript
复制
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';
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16270297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档