php - 如何编写这个复杂的 MySQL 查询

标签 php mysql

我有一个名为 Users,它有三个 Email、FB_Id、Google_ID

问题是如何将以下想法复制到一个 MySQL 查询中

  1. 假设有人使用 FB_id 登录,那么如果电子邮件存在,我应该检查数据库。如果是,则在本例中更新相关 ID FB_Id。

我想做的是为用户保留来自不同提供商的所有 ID。如果用户具有相同的 google+ 和 Facebook 用户 ID,那么我们可以获得该电子邮件提供商的 ID,我的网站将允许登录

我写的函数是这样的。现在我想将 UPDATE 操作添加到其中,然后从数据库中获取用户详细信息。

函数

function checkUpdate () {
    if ($this->email)
    {
       $query  =" SELECT * FROM `users` WHERE `Email` ='".$this->email."'";
    }
    else
    {
       echo "Email not exist ";
    }

    $rc = $this->parent->database->query($query);

    if (mysql_num_rows($rc)>0)
    {
        $this->flag_details = 'true';
    }

    while ($rfg=mysql_fetch_array($rc))
    {
        //print_r($rfg);

        $_POST['im_password'] = $rfg['Password'];
        $_POST['im_user'] = $rfg['Email'];
    }

}

更新1

function checkUpdate () {
    if ($this->email)
    {
        $query  =" SELECT * FROM `users` WHERE `Email` ='".$this->email."'";
    }
    else
    {
        echo "Email not exist ";
    }

    $rc = $this->parent->database->query($query);
    if (mysql_num_rows($rc)>0)
    {
        $this->flag_details = 'true';

        //Here is my logic for it which I want to make in one sql query 
        if (isset($_POST['im_FbId']))
        {
            $sql = "UPDATE `users` SET fb_id='".$_POST['im_FbId']."' WHERE id=2";
        }

        if (isset($_POST['im_GId']))
        {
            $sql = "UPDATE `users` SET google_Id='".$_POST['im_GId']."' WHERE id=2";
        }

        $this->parent->database->query($sql);
    }

    while ($rfg=mysql_fetch_array($rc))
    {
        //print_r($rfg);

        $_POST['im_password'] = $rfg['Password'];
        $_POST['im_user'] = $rfg['Email'];
    }

}

提前致谢

最佳答案

如果我正确理解你的问题,你想同时更新 google id 和 facebook id 或其中之一

<?php

$sql = "UPDATE `users` ";
$sql .= isset($_POST['im_FbId']) ? " SET fb_id='{$_POST['im_FbId']}' " : "";
$comma = isset($_POST['im_FbId']) ? "," : "";
$sql .= isset($_POST['im_GId']) ? " {$comma}SET google_Id='{$_POST['im_GId']}' " : "";
$sql .= " WHERE id=2";

$this->parent->database->query($sql);

如果只有一个存在,例如 $_POST['im_FbId'] $sql 值将为

    UPDATE `users` SET fb_id='facebook id' WHERE id=2

如果两个 Id 都存在,则 $sql 值将为

    UPDATE `users` SET fb_id='facebook id' ,SET google_Id='google id' WHERE id=2

关于php - 如何编写这个复杂的 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27184525/

相关文章:

php - 根据我的单选按钮选择显示 mysql 表结果

php - Redis 比 MySQL 慢

php - 如何根据 scorm 完成的结果隐藏/显示 moodle 中的事件

php - 从二维数组 PHP 中删除某些索引

mysql - 另一个数据库设计难题

php - 尝试获取非对象 Laravel 错误的属性 'id'

使用 SHA256 的 PHP 登录脚本

php - 拉维尔 5.5 : Authorization Policy AccessDeniedHttpException This action is unauthorized

php - 如何获取要显示的四行的首尾行号

mysql - 如何连接两个表并在 hibernate 中迭代