【问题标题】:Storing facebook data to mysql [duplicate]将facebook数据存储到mysql [重复]
【发布时间】:2012-09-29 11:51:39
【问题描述】:

可能重复:
Unable to save more than 2 records

我正在使用 Facebook Javascript SDK 登录并获取用户信息。当我将此数据保存到 mysql 数据库时,它只保存 1-2 条记录。虽然我每次都在获取用户记录。

if($user){
                print_r($userInfo);
                $userid = $userInfo[id];
                $username = $userInfo[name];
                $birthday = $userInfo[birthday];
                $birthday = date("Y-m-d", strtotime($birthday));
                $userlocation = $userInfo[location][name];
                $gender = $userInfo[gender];
                $useremail = $userInfo[email];
                $sql = "INSERT INTO users (userid, username, useremail, birthday, location, gender) VALUES ('$userid', '$username', '$useremail', '$birthday', '$userlocation', '$gender')";
                if($result = mysql_query($sql)) {
                    echo "success";
                }
            }

用户的表定义是:

1   userid  int(20)         No  None          Change      Drop    Browse distinct values     Primary      Unique      Index  Spatial     Fulltext
 2  username    varchar(30) latin1_swedish_ci       No  None          Change      Drop    Browse distinct values      Primary     Unique      Index  Spatial      Fulltext
 3  useremail   varchar(50) latin1_swedish_ci       No  None          Change      Drop    Browse distinct values      Primary     Unique      Index  Spatial      Fulltext
 4  birthday    date            No  None          Change      Drop    Browse distinct values      Primary     Unique      Index  Spatial     Fulltext
 5  location    varchar(30) latin1_swedish_ci       No  None          Change      Drop    Browse distinct values      Primary     Unique      Index  Spatial      Fulltext
 6  gender  varchar(10) latin1_swedish_ci       No  None          Change      Drop    Browse distinct values      Primary     Unique      Index  Spatial      Fulltext

使用 PDO 时:

if($user){
                $host = "internal-db.s130813.gridserver.com";
                $db = "db130813_fbmooz";
                $user = "db130813_adminu";
                $pass = "ansari786";
                $conn = new PDO("mysql:host=$host;dbname=$db",$user,$pass);
                $uid = $userInfo[id];
                $uname = $userInfo[name];
                $sql = "INSERT INTO users (userid,username) VALUES (:uid,:uname)";
                $q = $conn->prepare($sql);
                $q->execute(array(':uid'=>$uid, ':uname'=>$uname));

还是无法保存

【问题讨论】:

  • 您希望获得多少条记录?
  • 取决于用户,可能多达数百个
  • 所以这段代码被重复调用了?我想我错过了应该插入这么多记录的地方。
  • 每次新用户通过 FB id 登录时都会执行此代码,稍后我会在数据库中检查 fb id,但目前我预计至少有 20-25 条记录。跨度>
  • 您是否在 'print_r' 行看到与预期一样多的值/命中,但未调用 INSERT?或者这段代码没有被调用?我想我不知道这是更大的代码问题还是 mysql 问题。

标签: mysql facebook user-data


【解决方案1】:

我想到了一些想法:

  • 使用 PDO 重写 - 'mysql_query' fn 已弃用
  • 使用准备好的语句和 'mysql_real_escape_string' 确保值没有任何错误字符
  • 检查返回值并使用 'mysql_error()' 查看是否出错

【讨论】:

    猜你喜欢
    • 2013-08-11
    • 2021-05-17
    • 2023-04-03
    • 2020-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-08
    • 1970-01-01
    相关资源
    最近更新 更多