2012-03-05 68 views
0

Facebook和Twitter会员脚本错误: (不记录数据到数据库)会员与Facebook(错误:MySQL的)

登录=> FB/TW DATABASE =>CONNECT OK! = BACK到我的网站=> MY DATABASE => ERROR>

SQL:

CREATE TABLE users 
(
id INT PRIMARY KEY AUTO_INCREMENT, 
email VARCHAR(70), 
oauth_uid VARCHAR(200), 
oauth_provider VARCHAR(200), 
username VARCHAR(100), 
twitter_oauth_token VARCHAR(200), 
twitter_oauth_token_secret VARCHAR(200) 
); 

loginFacebook.php:

<?php 
require 'dbconfig.php'; 
class User { 

function checkUser($uid, $oauth_provider, $username,$email,$twitter_otoken,$twitter_otoken_secret) 
{ 
    $query = mysql_query("SELECT * FROM `users` WHERE oauth_uid = '$uid' and oauth_provider = '$oauth_provider'") or die(mysql_error()); 
    $result = mysql_fetch_array($query); 
    if (!empty($result)) { 
     # User is already present 
    } else { 
     #user not present. Insert a new Record 
     $query = mysql_query("INSERT INTO `users` (oauth_provider, oauth_uid, username,email,twitter_oauth_token,twitter_oauth_token_secret) VALUES ('$oauth_provider', $uid, '$username','$email')") or die(mysql_error()); 
     $query = mysql_query("SELECT * FROM `users` WHERE oauth_uid = '$uid' and oauth_provider = '$oauth_provider'"); 
     $result = mysql_fetch_array($query); 
     return $result; 
    } 
    return $result; 
} 
} ?> 

屏幕:错误

Column count doesn't match value count at row 1

有什么不对?

最好的问候,

回答

1

你有什么是

INSERT INTO `users` (oauth_provider, oauth_uid, username, email, twitter_oauth_token, twitter_oauth_token_secret) 
VALUES ('$oauth_provider', $uid, '$username','$email')") 

正如你看到你正在试图插入6值,但是在您所提供的仅4项('$oauth_provider', $uid, '$username','$email')数据查询,它是示值误差。

根据您的要求,您可以使用以下两种方式。

选项1

INSERT INTO `users` (oauth_provider, oauth_uid, username, email, twitter_oauth_token, twitter_oauth_token_secret) 
VALUES ('$oauth_provider', $uid, '$username','$email',NULL, NULL)") 

选项2

INSERT INTO `users` (oauth_provider, oauth_uid, username, email) 
VALUES ('$oauth_provider', $uid, '$username','$email')") 
+0

现在工作! Fahim,感谢您的帮助和兴趣! – Editor 2012-03-05 14:16:15

+2

不是问题。总是乐于帮助! – 2012-03-05 14:16:56

2

重新格式化您的查询是多行以便于阅读:

$query = mysql_query(
    "INSERT INTO `users` 
    (oauth_provider, oauth_uid, username, email, twitter_oauth_token, twitter_oauth_token_secret) 
    VALUES 
     ('$oauth_provider', $uid, '$username','$email') 
    " 
) or die(mysql_error()); 

您指定6列在你的INSERT声明,但仅为这些列提供4个实际值。从查询中删除最后的2 twitter_oauth_*列,或提供这些列的值。

+0

感谢您对@richsage的兴趣! – Editor 2012-03-05 14:16:44