Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何编写这个复杂的MySQL查询_Php_Mysql - Fatal编程技术网

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

Php 如何编写这个复杂的MySQL查询,php,mysql,Php,Mysql,我有一个名为Users的表,它有三列:Email、FB\u Id、Google\u Id 问题是我如何将以下想法复制到一个MySQL查询中 假设有人使用FB_id登录,那么如果电子邮件存在,我应该检查DB。如果是,则在本例中更新相关ID FB_ID。 我试图做的是为一个用户保留来自不同提供者的所有id。如果用户具有google+和Fb的相同用户ID,则我们可以同时拥有该电子邮件的提供商ID,并且我的网站将允许登录该电子邮件 我写的函数是这样的。现在,我想将更新操作添加到此中,然后从数据库中获取用

我有一个名为Users的表,它有三列:Email、FB\u Id、Google\u Id

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

假设有人使用FB_id登录,那么如果电子邮件存在,我应该检查DB。如果是,则在本例中更新相关ID FB_ID。 我试图做的是为一个用户保留来自不同提供者的所有id。如果用户具有google+和Fb的相同用户ID,则我们可以同时拥有该电子邮件的提供商ID,并且我的网站将允许登录该电子邮件

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

作用

更新1


提前感谢

更新用户设置FB_id='FACABOOK'u FB_id'WHERE EMAIL='FB_EMAI'

如果我正确理解你的问题,你想同时更新谷歌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);
如果两个Id都存在,$sql值将为

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

如果其他语句是你的方法。我不认为你想要的东西在一个语句中是可能的。你没有使用他们的API吗?@Dorvalla哦,是的,我在脑海中使用了if-else语句。但我在想,如果我能在一个查询中链接它:。谢谢你的建议though@Vikram哦,等等,这不是很容易吗:从facebook更新FB\u id=id\u,其中email=email\u来自facebook?听起来像是一个计划当我刚开始使用SQL时,往往会被一个非常基本的查询所困扰,我在谷歌上搜索了VisualSQL查询生成器,找到了一些非常有用的。。你可以试试,但不要太依赖工具。Otoh,我很惊讶地看到这样一个工具生成了比我所能生成的更优雅的东西:-/
<?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);
    UPDATE `users` SET fb_id='facebook id' WHERE id=2
    UPDATE `users` SET fb_id='facebook id' ,SET google_Id='google id' WHERE id=2