2012-03-05 13 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