PHP 脚本检查用户是否已存在于 MySQL 数据库中

标签 php mysql database facebook post

我正在为 Facebook 创建简单的游戏。所有使用过应用程序的用户都会写入数据库。我需要始终检查用户是否已存在于数据库中,如何正确执行此操作?

所以我有变量$name = $user_profile['name'];它成功返回用户名

这是我检查用户是否已存在于数据库中的代码部分。

$user_profile = $facebook->api('/me');
$name = $user_profile['name'];

      $mysqli = new mysqli("host","asd","pw","asdf");
                   echo "1";
               $sql = "SELECT COUNT(*) AS num FROM myTable WHERE userName = ?";
                   echo "2";
                if ($stmt = $mysqli->prepare($sql)) {
                   echo "3";
                $stmt->bind_param('s', $name);
                   echo "4";
                $stmt->execute();
                   echo "5";
                $results = $stmt->get_result();
                   echo "6";
                $data = mysqli_fetch_assoc($results);
                   echo "7";
                }
           if($data['num'] != 0)
            {
                    echo "bad";
                    print "user already exists\n";
            } else {
                    echo "good";    
                    $apiResponse = $facebook->api('/me/feed', 'POST', $post_data);
                    print "No user in database\n";
            }
    }

此代码不起作用,如果数据库中不存在用户,它应该将数据发布到用户墙上。我花了很多时间寻找原因,但没有成功。调试后没有显示任何错误。为了在每一行之后找到哪一行不正确,我使用了 echo "number" 所以现在我知道哪一行是不正确的。它打印 1 2 3 4 5 并卡住。 (代码下面的所有内容都没有加载。)这意味着这行 $results = $stmt->get_result(); 是不正确的。但我误解了这行代码有什么问题?

如果我评论这一行所有代码加载(然后打印1 2 3 4 5 6 7 No user in database! and It post data on user's wall.)但是在这种情况下,程序总是执行相同的操作,而不是检查数据库。

我还尝试将 COUNT(*) 更改为 COUNT(userName),但效果相同。

那么你能帮我一下吗?

我读过这个:Best way to check for existing user in mySQL database?但这对我没有帮助。

P.s.在这种情况下,我需要使用 FB 用户名。

最佳答案

你可以试试这个,$stmt->fetch()而不是mysqli_fetch_assoc($results)

    $mysqli = new mysqli("host","asd","pw","asdf");
echo "1";
/* Create the prepared statement */
$stmt = $mysqli->prepare("SELECT COUNT(*) AS num FROM myTable WHERE userName = ?") or die("Prepared Statement Error: %s\n". $mysqli->error);
    /* Execute the prepared Statement */
    $stmt->execute();

    /* Bind results to variables */
    $stmt->bind_result($name);

    $data = $stmt->fetch();
    if($data['num'] > 0)
    {
        echo "bad";
        print "user already exists\n";
    } else {
        echo "good";
        $apiResponse = $facebook->api('/me/feed', 'POST', $post_data);
        print "No user in database\n";
    }   

    /* Close the statement */
    $stmt->close();

引用号:http://forum.codecall.net/topic/44392-php-5-mysqli-prepared-statements/

关于PHP 脚本检查用户是否已存在于 MySQL 数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20538952/

相关文章:

javascript - 重新显示来 self 的服务器的数据/缺少一个步骤

sql - 为什么 null 不等于 null false

php - Apache 不会在轮询时提供服务

mysql - 如何在 mySQL 表中表示树结构

解析来自 xml 的数组时出现 PHP 错误

mysql - 从文件恢复 mySQL 数据库 - Windows 服务器

mysql - 使用 vb.net 在 sql 数据库中插入数字(如学生 ID、员工 ID)

mysql - Qt 使用数据库检查登录

PHP curl 降低 SSL 安全性(ca md too weak 错误)

php - Mysql语句没有返回正确的数据