0

我还处于早期学习阶段,我用头撞墙寻找线索。我一直在阅读手册无济于事。我正在根据 phpAcadmy 教程“注册和登录”构建用户登录系统。他们在教程中使用 mysql_connect,但我使用的是与 mysql 的 PDO 连接。

我正在创建我的第一个函数 user_exists,它会在我的表的用户名列中查询与已发布的 $username 匹配的名称,如果找到,则返回 true 或 false。

这是我的测试代码:

$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`.`username` FROM `users` WHERE `username` = '$username'");
    return($query, 0) == 1) ? true : false; // ???
}

if (user_exists('junkomatic') === true) {
    echo 'exists';
}

die();

底部的 if 语句应该测试它上面的函数。与 ??? 是明显错误的线。我在“,”上遇到错误,任何输入/解释都将不胜感激。

4

3 回答 3

1

您的函数不使用准备好的语句。$db 未在函数中定义,因此代码将生成错误。

您将不得不这样做:

function user_exists($db, $username) {
    $query = $db->query("SELECT COUNT(`idUser`) FROM `users` WHERE `username` = :username");
    $query->execute(array(':username'=> $username));
    $cnt = $query -> fetch(); //Get actual count of users

    return $cnt >= 1 ? true : false; //This will return true if count is one or larger else it would return false
}
于 2013-04-29T23:15:36.590 回答
0

似乎您没有执行查询,这就是为什么它不能正常工作的原因。你可以只添加执行命令,只需添加

$query = $db->query("SELECT `users`.`username` FROM `users` WHERE `username` = '$username'");
$query->execute();
于 2013-04-29T22:44:10.407 回答
-1

这似乎很容易解决,您只需要执行准备好的查询,然后就可以从结果集中获取任何内容。

$stmt->execute();
于 2013-04-29T22:38:47.690 回答