1

テーブルにレコードが存在するかどうかを確認しようとしています。ユーザーをリダイレクトしたい場合は、レコードを挿入したいです。

私は次のことを持っています。私の唯一の問題は、テーブルに同じレコードを何度も挿入することです。そのため、最初のクエリが機能していないようです。

$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';
        }

完了

<?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';
        }


    }
}
?>

古いMYSQLが機能しました

$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';
    }
4

1 に答える 1

1

その代わりにrowCountを使用する方が良い...

//after $stmt->execute()...
if($stmt->rowCount() != 0) {
      //proceed
}else {
      //redirect if rowCount is equal to 0
}
于 2013-06-25T00:38:02.710 に答える