Php 同一用户在数据库中添加了多次

Php 同一用户在数据库中添加了多次,php,facebook,Php,Facebook,我是PHP新手,我对以下问题感到困惑。当facebook用户登录时,该用户将被添加到数据库中。但是,当同一用户再次登录时,它应该打印出“Username ready exists”,而不是将同一用户再次插入数据库。我怎么修理它?谢谢你的帮助 <?php echo "<p> Hello World!</p>"; // php 5.3 and up can throw an error if this is not

我是PHP新手,我对以下问题感到困惑。当facebook用户登录时,该用户将被添加到数据库中。但是,当同一用户再次登录时,它应该打印出“Username ready exists”,而不是将同一用户再次插入数据库。我怎么修理它?谢谢你的帮助

        <?php 
          echo "<p> Hello World!</p>";

        // php 5.3 and up can throw an error if this is not set  
        date_default_timezone_set("Europe/London");


        // much of the example code on the web forgets to include these HttpClients, for some reason
        require_once( '../docs/Facebook/HttpClients/FacebookHttpable.php' );
        require_once( '../docs/Facebook/HttpClients/FacebookCurl.php' );
        require_once( '../docs/Facebook/HttpClients/FacebookCurlHttpClient.php' );
        require_once( '../docs/Facebook/FacebookSession.php' );
        require_once( '../docs/Facebook/FacebookRedirectLoginHelper.php' );
        require_once( '../docs/Facebook/FacebookRequest.php' );
        require_once( '../docs/Facebook/FacebookResponse.php' );

        require_once( '../docs/Facebook/FacebookSDKException.php' );
        require_once( '../docs/Facebook/FacebookRequestException.php' );
        require_once( '../docs/Facebook/FacebookAuthorizationException.php' );
        require_once( '../docs/Facebook/GraphObject.php' );

        // This one is also often left out
        require_once( '../docs/Facebook/Entities/AccessToken.php');

        // store your $HOSTNAME, $APPID and $SECRET in this file:
        require_once( '../docs/my_app_credentials.php' );

        use Facebook\FacebookSession;
        use Facebook\FacebookRedirectLoginHelper;
        use Facebook\FacebookRequest;
        use Facebook\FacebookResponse;
        use Facebook\FacebookSDKException;
        use Facebook\FacebookRequestException;
        use Facebook\FacebookAuthorizationException;
        use Facebook\GraphObject;

        session_start();

        // init app with app id (APPID) and secret (SECRET)
        FacebookSession::setDefaultApplication($APPID,$SECRET);

        // login helper with uri
        $PAGENAME="page2.php";
        $REDIRECT_URL="http://".$HOSTNAME.'/'.$PAGENAME;

        $helper = new FacebookRedirectLoginHelper( $REDIRECT_URL );
        try {
            echo "<p> about to try to get session: the helper variable: </p>";
            $session = $helper->getSessionFromRedirect();
        //  echo "<p> the session variable:</p>";
        //  var_dump($session);
            } catch( FacebookRequestException $ex ) {
          // When Facebook returns an error
          echo "<p> There was a facebook request exception</p>";
        } catch( \Exception $ex ) {
          echo "<p> There was a validation failure</p>";
          var_dump($ex);

          // When validation fails or other local issues
        }
          echo "<p> 'get session' block now completed...</p>";

        // see if we have a session
        if ( isset( $session ) ) {
          echo "<p> Now try to get a graph node</p>";

          // graph api request for user data
          $request = new FacebookRequest( $session, 'GET', '/me' );
          $response = $request->execute();
          // get response
          $graphObject = $response->getGraphObject();

          // print data
          echo  print_r( $graphObject, 1 );


          $FBID=$graphObject->getProperty('id');
          $FIRSTNAME=$graphObject->getProperty('first_name');
          $SECONDNAME=$graphObject->getProperty('last_name');
          $TOKEN=$_GET['code'];

          //write code to check if current user is in database
          //if not add them to database
          //finally, give link to page3.php which removes them (user) from database.
          $con = mysqli_connect("localhost", "", "", "");
          $query = "SELECT FBID FROM USERS WHERE FBID='$FBID'";

          $result = $con->query($query);

          if (!$result)
          {
              echo "Username already exists";
          }
          else
          {


           $con->query("INSERT INTO USERS (FBID,FIRSTNAME,SECONDNAME,TOKEN) VALUES ('$FBID','$FIRSTNAME','$SECONDNAME','$TOKEN')");
            echo"user inserted";
          }

        } else {
          // show login url
          echo 'No session was set. Try logging in again by clicking here: <a href="' . "page1.php". '">Login</a>';
        }

        ?>

您正在检查
$查询
但它总是会返回一些东西,因此它会转到
其他

您可以改为检查返回的行数:

if ($result->numRows() > 0) {
  //if more than 0 rows returned (e.g, one row)
  echo "Username exists!";
} else {
  //insert to db
}

或者,更简单的是,如果($result)
,只需去掉

var_dump($result)并查看它在这两种情况下都有什么作用…很可能是两件事中的一件,FBID不是唯一的键,或者FBID在每次调用facebook的APIF($result)时都会得到更改,而不是if(!$result)你是说if($result)?非常感谢,它不再向数据库添加相同的用户(这很好)但它仍然没有打印出“用户名已经存在”的消息?你说得对!谢谢@Randykayudhistira你是做了
$result
而不是
查询
?我打错了@RedlightI目前有以下代码:if($result->numRows()>0){echo“用户名已经存在!”;}else{$con->query(“插入到用户(FBID、FIRSTNAME、SECONDNAME、TOKEN)值(“$FBID’、“$FIRSTNAME’、“$SECONDNAME’、“$TOKEN”);echo“用户插入”;}