2011-12-05 7 views
1

この関数を使用して、レコードがデータベースに存在するかどうかをチェックし、それに応じて動作します。データが一致しない場合、2番目の部分にエラーがあります。新しいレコードを挿入するはずですが、新しいデータを挿入せず、空のデータを返します。どこが間違っていますか?関数が空のデータを返します

class User { 

function checkUser($uid, $oauth_provider, $username,$email,$twitter_otoken,$twitter_otoken_secret) 
{ 

    // Define database connection constants 
define('DB_HOST', 'localhost'); 
define('DB_USER', '*********'); 
define('DB_PASSWORD', '********'); 
define('DB_NAME', '******'); 
    $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); 

    $query ="SELECT * FROM si_table WHERE oauth_uid = '$uid' and oauth_provider = '$oauth_provider'"; 
    $data=mysqli_query($dbc,$query); 
    $result = mysqli_fetch_array($data); 
    if (!empty($result)) { 

     # User is already present 
    } else { 

     #user not present. Insert a new Record 

    $query2 ="INSERT INTO si_table (oauth_provider, oauth_uid, user_name,email_id,twitter_oauth_token,twitter_oauth_token_secret) VALUES ('$oauth_provider',$uid,'$username','$email')"; 
     mysqli_query($dbc,$query2); 
     $query1 ="SELECT * FROM si_table WHERE oauth_uid = '$uid' and oauth_provider = '$oauth_provider'"; 
     $data1=mysqli_query($dbc,$query1); 
     $row = mysqli_fetch_array($data1); 

     return $row; 

    } 
    return $result; 
} 



} 
+0

なぜあなたはmysqliの、連結クエリ文字列を使用しているの戻り値にチェック若干の誤差がありますか?パラメータ化されたクエリの使用を強く検討してください。SQLインジェクションの恐怖を軽減する小さな投資です。 – Polynomial

+0

さらに重要なことは、INSERTステートメントでは何が起こっているのでしょうか?それは間違って見える。エラーのチェックをよりよくする:http://de3.php.net/manual/en/mysqli.error.php – Carsten

+0

これについて少し気付かないのですが...あなたは私を案内してくれますか? –

答えて

2

挿入クエリでエラーが発生しました。6つのフィールドに4つの値しかありません。

mysqli_query($dbc, $query2);

関連する問題