用于检查MySQL数据库中是否已存在用户的PHP脚本
我正在为Facebook创建一个简单的游戏。所有使用该应用程序的用户都会写入数据库。我需要经常检查用户是否已经存在于数据库中,如何正确地做到这一点 所以我有变量用于检查MySQL数据库中是否已存在用户的PHP脚本,php,mysql,database,facebook,post,Php,Mysql,Database,Facebook,Post,我正在为Facebook创建一个简单的游戏。所有使用该应用程序的用户都会写入数据库。我需要经常检查用户是否已经存在于数据库中,如何正确地做到这一点 所以我有变量$name=$user_profile['name']它成功返回用户名 这是我用来检查数据库中是否已经存在用户的部分代码 $user_profile = $facebook->api('/me'); $name = $user_profile['name']; $mysqli = new mysqli("host","
$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”
,现在我知道哪一行是不正确的。它打印12345
和stuck。(代码下面的所有内容都没有加载。)这意味着这一行$results=$stmt->get_result()代码>不正确。但我误解了这句话有什么不对
如果我对这行注释所有代码加载(然后在数据库中打印1234567无用户!
并在用户的墙上发布数据),但在这种情况下,程序总是这样做,不检查数据库
$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";
}
}
此外,我还尝试将COUNT(*)
更改为COUNT(userName)
,但相同
你能帮我吗
我读过这篇文章:但它对我没有帮助
注意:在这种情况下,我需要使用FB用户名。你能试试这个吗,$stmt->fetch()
而不是mysqli\u fetch\u assoc($results)
Ref:当使用面向对象的连接、查询、绑定和执行时,您可能希望使用对象或集成的获取,而不是mysqli\u fetch\u assoc
这一问题有点离题,但很重要:您不应该使用用户名(它可以更改!),更好的方法是使用用户id。@RoyalBg感谢您的回答,但我真的不知道如何正确地做到这一点。@FexdelSollo感谢您的回答,但在这种情况下,我需要使用FB用户名,而不是用户名ID@RsPenki检查我的答案,我展示了一个示例并链接了文档。如果我的修复程序不起作用,您可以阅读获取流。由于混合了db api,因此无法工作。也没有explanation@RoyalBg,谢谢,这是我的错。更新答案。谢谢你的回答,但正如我说的,它只从5开始打印123445
,它停止工作了。据我所知,这行代码$results=$stmt->get_result()代码>不正确。正如你所说,我改变了,但同样的问题——不工作,只打印到5个值和stuck。如果我使用这个$stmt=$mysqli->prepare($sql)
而不是如果(…)
它只打印3和stuck的值。@Rs Penki,更新了我的答案。请查收