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

PHP脚本。检查用户是否已经在MySQL数据库中,php,mysql,database,facebook,select,Php,Mysql,Database,Facebook,Select,我正在为Facebook创建应用程序,所有使用该应用程序的用户都会写入数据库。所以,我需要经常检查用户是否已经在数据库中,如何正确地做到这一点 所以我有变量$name=$user_profile['name'];它获取用户名 这是我将用户插入数据库的函数 $mysqli = new mysqli("asd","asd","pw","asd"); if ($stmt = $mysqli->prepare("INSERT into myTable (score, userName) V

我正在为Facebook创建应用程序,所有使用该应用程序的用户都会写入数据库。所以,我需要经常检查用户是否已经在数据库中,如何正确地做到这一点

所以我有变量$name=$user_profile['name'];它获取用户名

这是我将用户插入数据库的函数

    $mysqli = new mysqli("asd","asd","pw","asd");
if ($stmt = $mysqli->prepare("INSERT into myTable (score, userName) VALUE (?,?) ")) {
if (!$mysqli->set_charset("utf8")) {
    printf("Error loading character set utf8: %s\n", $mysqli->error);
} else {

}
$stmt->bind_param('ss', $score, $name);
   $stmt->execute();
   if ($stmt->error != '') {
       echo ' error:'.$stmt->error;
   } else {
       echo 'success';
   }
   $stmt->close();
} else {
   echo 'error:'.$mysqli->error;
}
$mysqli->close();
现在我需要If函数来检查用户是否已经在数据库中。据我所知,它应该类似于插入到数据库,只是插入到我需要使用选择从只是如何成功地做到这一点?多谢各位

我读过这篇文章:但它对我没有帮助

更新

现在,我的代码如下所示:

   $mysqli = new mysqli("host","asd","pw","asdf");
   echo "1";
 $sql = "SELECT COUNT(*) AS num FROM myTable WHERE userName = ?";
    echo "2";
 if ($stmt = $mysqli->prepare("SELECT COUNT(*) AS num FROM under WHERE userName = ? ")) {
    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";
    }
它打印12345。这意味着这一行$results=$stmt->get\u result;是不正确的,因为它之后没有打印值。这里有什么问题?

这个查询很简单:

SELECT
    COUNT(*)
FROM
    myTable
WHERE
    userName = :user_name
如果结果不是0,则用户存在

mysqli在php中的实现
1如果您写入FB用户数据,则不应检查名称!您应该检查FB用户ID-它总是唯一的,并且名称可以相同


2永不计数*-改用COUNTid

您不应该使用FB用户名毕竟,用户可以更改它,但FB用户id。@CBroe感谢您的回答,在这种情况下,我需要使用用户名,而不是FB用户id,但感谢您的回答。感谢您的回答,但我误解了我的PHP脚本现在的样子$query=从myTable中选择COUNT*,其中userName=:user_name,if$query==0{…}else{…}?@RimantėBaltiejūtė查看更新的答案。我希望,当我给你SQL时,你会自己编写php代码;再次感谢您的回答,但仍然不起作用,我用代码更新了我的代码,使其看起来像现在的样子。@RimantėBaltiejūtė你说不起作用是什么意思?你会犯什么错误?你试过调试吗?调试后我没有收到任何错误。我会尽力解释的。在Facebook窗口是Flash游戏,我正在尝试你的代码在游戏顶部使用,所以我看到白色窗口游戏并没有出现,但调试显示成功并没有错误。如果我将此计数*更改为例如COUNTadasda,我会得到错误:屏幕上没有显示字段adasda和游戏。这意味着这个计数*行有问题。谢谢你们的回答,但现在我需要使用用户名,在这种情况下不能使用ID。我的例子仍然无法使用COUNTid,没有发生任何事情我添加了检查这里是否有错误,我得到了1:错误:“字段列表”中的未知列“id”,当我使用*而不是id COUNT*作为num时,我获得了成功,没有错误,但仍然不起作用。我认为这里的某个地方有错误,因为它成功地连接到数据库:results=$stmt->get\u result$data=mysqli\u fetch\u assoc$results;如果$data['num']!=0{echo good;$apiResponse=$facebook->api'/me/feed',POST',$POST_data;}否则{echo bad;$apiResponse=$facebook->api'/me/feed',POST',$POST_data;}如果用户在数据库中,我会尝试以两种方式发布数据,如果用户不在数据库中,但它无论如何都不起作用。在查询后打印$data的值,这样您就知道问题出在哪里了。若$data返回正常值,那个么试着在你们的facebook API中查找错误。你需要一步一步地调试它,否则你会花太多的时间在工作正常的事情上,但不会注意到问题出在哪里。检查$mysqli->prepare$sql返回的内容。看来你的“如果布拉布拉”不起作用了。
$sql = "SELECT
    COUNT(*) AS num
FROM
    myTable
WHERE
    userName = ?";

if ($stmt = $mysqli->prepare($sql)) {
    $stmt->bind_param('s', $name);
    $stmt->execute();
    $results = $stmt->get_result();
    $data = mysqli_fetch_assoc($results);
    if($data['num'] != 0)
    {
        print "user already exists\n";
    }
}