Mysql添加新行而不是更新它

时间:2014-07-14 12:05:08

标签: php mysql

我已将google loing整合到我的网站上。它的工作非常棒。当有人通过谷歌登录第一次时,新的条目将存储在数据库中。 但是,当他再次登录时......只应该更新最后一次登录(表上的一列)......但是,mysql会添加一个新行。 我在这里做错了什么?

public function trigger_registration_from_google($fname,$lname,$email)
    {
        global $conn;
        try
        {
            if(useremailexists($email))
            {
                $date = date('Y-m-d');
                //run update query
                //user already exists, only update
                try
                {
                    $s = $conn->prepare("UPDATE users set last_login = :last_login where emailid = :email ");
                    $s->bindParam(':last_login',$date);
                    $s->bindParam(':email',$email);
                    $s->execute();
                    $s->closeCursor();
                }
                catch(PDOException $e)
                {
                    echo $e->getMessage();
                }
            }
            else
            {
                //insert
                //insert now..since he is a new user
                $date = date('Y-m-d');
                $v=1;
                $r="google";
                try
                {
                    $s = $conn->prepare("INSERT INTO users(fname,lname,emailid,registeredby,registeredon,last_login,verified) values (:fname,:lname,:emailid,:registeredby,:registeredon,:last_login,:verified)");
                    $s->bindParam(':fname',$fname);
                    $s->bindParam(':lname',$lname);
                    $s->bindParam(':emailid',$email);
                    $s->bindParam(':registeredby',$r);
                    $s->bindParam(':registeredon',$date);
                    $s->bindParam(':last_login',$date);
                    $s->bindParam(':verified',$v);
                    $s->execute();
                }
                catch(PDOException $e)
                {
                    echo $e->getMessage();
                }
            }
        }
        catch(PDOException $e)
        {
            echo $e->getMessage();
        }
    }//function

编辑 的 useremailexists

function useremailexists($email)
{
    //check if the email exists
    global $conn;
    try
    {
        $s = $conn->prepare("SELECT * from users where emailid = :email");
        $s->bindParam(':email',$email);
        $s->execute();
        if($s->rowCount() > 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    catch(PDOException $e)
    {
        echo $e->getMessage();
    }
}//function

1 个答案:

答案 0 :(得分:0)

验证函数useremailexist是返回true还是false,如果没有这段代码,我们无法帮助您。