2013-05-22 3 views
1

Je suis en train d'essayer de voir si un enregistrement existe dans ma table, s'il rechigne à rediriger mon utilisateur, sinon, j'aime insérer un enregistrement.Vérifiez si l'enregistrement existe dans le tableau, si tel est le cas

J'ai ce qui suit, mon seul problème est d'insérer le même enregistrement encore et encore dans ma table, donc ma requête initiale ne semble pas fonctionner.

$query = "SELECT * FROM `users` WHERE oauth_uid=? and oauth_provider=?"; 
     $stmt = $DBH->prepare($query); 
     $stmt->execute($uid, $oauth_provider); 
     while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 
      # silent 
     } 
     if (!empty($result)) { 
      # User is already present - Redirect them 
      echo 'This will redir'; 
     } else { 

      $sql = "INSERT INTO `users` (oauth_provider, oauth_uid, username, email) VALUES (:oauth_provider,:uid,:username,:email)"; 
      $q = $DBH->prepare($sql); 
      $q->execute(array(':oauth_provider'=>$oauth_provider,':uid'=>$uid,':username'=>$username,':email'=>$email)); 

      echo 'done'; 
     } 

complet

<?php 

require 'dbconfig.php'; 

class User { 

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

     $query = "SELECT * FROM `users` WHERE oauth_uid=? and oauth_provider=?"; 
     $stmt = $DBH->prepare($query); 
     $stmt->execute($uid, $oauth_provider); 
     while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 
      # silent 
     } 
     if (!empty($row)) { 
      # User is already present - Redirect them 
      echo 'This will redir'; 
     } else { 

      $sql = "INSERT INTO `users` (oauth_provider, oauth_uid, username, email) VALUES (:oauth_provider,:uid,:username,:email)"; 
      $q = $DBH->prepare($sql); 
      $q->execute(array(':oauth_provider'=>$oauth_provider,':uid'=>$uid,':username'=>$username,':email'=>$email)); 

      echo 'done'; 
     } 


    } 
} 
?> 

Old MYSQL Travaillé

$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 
     echo'user exists'; 
    } 
+0

Que contient '$ result'? Voulez-vous dire '$ row'? – andrewsi

+0

$ résultat non défini? –

+0

où vous définissez le résultat $? pas essayé en utilisant "num_rows" pour vérifier? – PiLHA

Répondre

1

mieux si vous pouvez utiliser rowCount au lieu de cela ...

//after $stmt->execute()... 
if($stmt->rowCount() != 0) { 
     //proceed 
}else { 
     //redirect if rowCount is equal to 0 
} 
Questions connexes