我正在为Facebook创建简单的游戏。所有使用应用程序的用户都被写入数据库。我需要经常检查如果用户已经存在在数据库中,如何正确地执行该操作?PHP函数检查用户是否存在于MySQL数据库中
所以我有变量$name = $user_profile['name'];
它成功返回用户的名称。
这是我的代码部分来检查如果用户已经存在于数据库中。
$user_profile = $facebook->api('/me');
$name = $user_profile['name'];
$mysqli = new mysqli("asd","asdf","pw","asdssst");
/* Create the prepared statement */
$stmt = $mysqli->prepare("SELECT COUNT(*) AS num FROM myTable WHERE userName = ?") or die("Prepared Statement Error: %s\n". $mysqli->error);
/* Bind results to variables */
$stmt->bind_param('s', $name);
/* Execute the prepared Statement */
$stmt->execute();
$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();
此代码无效,应在用户墙上发布数据如果用户不存在于数据库中。我花了很多时间找到原因,但没有成功。我试过用$stmt->bind_result($name);
而不是$stmt->bind_param('s', $name);
但是一样。无论如何,如果用户在数据库中,它总是返回:good No user in database
。这意味着PHP总是返回0;
另外我试图在数据库MySQL中使用SELECT COUNT(*) AS num FROM myTable WHERE userName = FirstName LastName
,它工作成功。当用户名未找到时返回num 0
,当用户名在数据库中时返回num 1
。
当我明白这个代码总是返回$data['num']; = 0
也许你知道是什么问题就在这里?
P.S. 我知道我需要使用FB用户名而不是用户名,但在这种情况下,我需要这样做。
我读过这个:Best way to check for existing user in mySQL database?但它没有帮助我。
谢谢你的答案,但我误解了其中的这部分代码我需要使用? – user3097011
您需要在获得查询结果后放置这类代码。 – ChaseC
你能更新你的答案吗?看起来像我的代码中,请吗?当然如果你有时间的话。 – user3097011