Php 一些Facebook用户的数据未插入mysql数据库

Php 一些Facebook用户的数据未插入mysql数据库,php,mysql,facebook,Php,Mysql,Facebook,我有一个奇怪但绝对严重的问题,就是从一些Facebook用户那里获取数据,这些用户授权并使用我的应用程序(通常顺便说一句) 到目前为止,大约有3000名用户使用了该应用程序,但只有600名用户出现在用户表中。这怎么可能呢?我找不到新旧用户之间的联系——对于一些人来说,它工作得完美无缺,而对于另一些人来说,它根本不工作 以下是完整的,但出于安全原因,经过审查的代码: <?php require 'facebook.php'; include 'config.php'; session_

我有一个奇怪但绝对严重的问题,就是从一些Facebook用户那里获取数据,这些用户授权并使用我的应用程序(通常顺便说一句)

到目前为止,大约有3000名用户使用了该应用程序,但只有600名用户出现在用户表中。这怎么可能呢?我找不到新旧用户之间的联系——对于一些人来说,它工作得完美无缺,而对于另一些人来说,它根本不工作

以下是完整的,但出于安全原因,经过审查的代码:

<?php
 require 'facebook.php';
 include 'config.php';
 session_start();

 $app_id = 'id';
 $app_secret = 'secret';
 $app_namespace = 'namespace';
 $app_url = 'https://apps.facebook.com/' . $app_namespace . '/';
 $scope = 'email,publish_actions';
//获取当前用户

 $user = $facebook->getUser();
//如果用户尚未安装应用程序,请将其重定向到“身份验证”对话框

 if (!$user) {
    $loginUrl = $facebook->getLoginUrl(array(
    'scope' => $scope,
    'redirect_uri' => $app_url,
    ));

print('<script> top.location.href=\'' . $loginUrl . '\'</script>');
 }

 else if ($user) {
    try {
//如果没有,则将其添加到数据库中

 if ($num == 0) {
$query = mysql_query("INSERT INTO users (oauth_uid, oauth_provider, username, first_name, last_name, email, pic_square ,login_date , dailytokens) 
        VALUES ({$user_profile['id']}, 'facebook', '{$user_profile['name']}', '{$user_profile['first_name']}','{$user_profile['last_name']}','{$user_profile['email']}', '".$photolink."',CURDATE(),1)");
$query = mysql_query("SELECT * FROM users WHERE oauth_uid = " . mysql_insert_id());
$result = mysql_fetch_array($query); 
 }
     else
     {
    $DateLastLogin=mysql_result($queryUserExists,0,"login_date");
    $myDate = date('Y-m-d');

    $CompLastDate = strtotime($DateLastLogin);
    $CompMyDate = strtotime($myDate);

if($CompLastDate < $CompMyDate){
    $updateDailyToken = "Update users set login_date=CURDATE(), dailytokens = dailytokens + 1 where oauth_uid =" . $user_profile['id'];
    $updateToken= mysql_query($updateDailyToken) or die(mysql_error());
}
 }
 $query = mysql_query("SELECT * FROM users WHERE oauth_provider = 'facebook' AND oauth_uid = " . $user_profile['id']);

 $_SESSION['userid']=$user_profile['id'];
这是你的问题

$query = mysql_query("INSERT INTO users (oauth_uid, oauth_provider, username, first_name, last_name, email, pic_square ,login_date , dailytokens) 
        VALUES ({$user_profile['id']}, 'facebook', '{$user_profile['name']}', '{$user_profile['first_name']}','{$user_profile['last_name']}','{$user_profile['email']}', '".$photolink."',CURDATE(),1)");
应该是

$query = mysql_query("INSERT INTO users (oauth_uid, oauth_provider, username, first_name, last_name, email, pic_square ,login_date , dailytokens) 
        VALUES ('{$user_profile['id']}', 'facebook', '{$user_profile['name']}', '{$user_profile['first_name']}','{$user_profile['last_name']}','{$user_profile['email']}', '{$photolink}',CURDATE(),1)");

问题在于数据库中的对象类型。例如,一些facebook用户的id越来越大:0098788563000236,所以使用BIGINT而不是INT解决了这个问题

哇,太快了!但恐怕不行。准确地说,它的工作方式与以前相同。我已经删除了所有的用户,并尝试用我伙伴的几个帐户登录(他们都有授权的应用程序);其中一些在用户表中,但其他不在。更新(如果有帮助):我甚至从那些FB帐户中删除了权限,并重新授权了应用程序-仍然没有什么…我已经完成投票,所以现在你已经获得了聊天权限,请在[聊天]上讨论此问题()
     if ($user) {
    $paramsout = array('next'=>'http://facebook.com');
    $logoutUrl = $facebook->getLogoutUrl($paramsout);
     }
     ?>
$query = mysql_query("INSERT INTO users (oauth_uid, oauth_provider, username, first_name, last_name, email, pic_square ,login_date , dailytokens) 
        VALUES ({$user_profile['id']}, 'facebook', '{$user_profile['name']}', '{$user_profile['first_name']}','{$user_profile['last_name']}','{$user_profile['email']}', '".$photolink."',CURDATE(),1)");
$query = mysql_query("INSERT INTO users (oauth_uid, oauth_provider, username, first_name, last_name, email, pic_square ,login_date , dailytokens) 
        VALUES ('{$user_profile['id']}', 'facebook', '{$user_profile['name']}', '{$user_profile['first_name']}','{$user_profile['last_name']}','{$user_profile['email']}', '{$photolink}',CURDATE(),1)");