首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IF语句无法正常工作->比较两个表并返回值

问IF语句无法正常工作->比较两个表并返回值
EN

Stack Overflow用户
提问于 2012-03-07 05:12:48
回答 1查看 272关注 0票数 0

我有以下问题:我想比较两个表,看看两个表中的数字是否相同。如果两者都是相同的数字,那么我想更新第一个表并返回值"He is in database",如果不是,则反之亦然。

下面是我要做的:

代码语言:javascript
复制
<?php

$DB_HostName = "localhost";
$DB_Name = "db";
$DB_User = "user";
$DB_Pass = "";
$DB_Table = "Relation";
$DB_Table2 = "Contacts";

$con = mysql_connect($DB_HostName,$DB_User,$DB_Pass) or die (mysql_error()); 
mysql_select_db($DB_Name,$con) or die(mysql_error()); 

$result = mysql_query("SELECT User FROM $DB_Table left join $DB_Table2 on User = Number", $con);

if ($result) {

    if (mysql_num_rows($result) > 0) {

echo "This user is already in database";
mysql_query("update $DB_Table2 SET Echo ='http://activity.24.eu/images /thumbsup.png'");        
}
else {
   echo "This user isn't in the database";
mysql_query("update $DB_Table2 SET Echo ='http://activity.24.eu/images/thumbsdown.png'");    
}
}
mysql_close($con);

?>

目前,它总是返回第一个echo (即使它不是真的),因此将相同的值添加到每个数字。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-07 06:09:15

在查询中执行左外部联接,这意味着结果将包含表关系的所有行,而不管它们在Contacts中是否有对应的行。

部件on User = Number属于连接,它描述了哪些列构成了关系。如果这些是您想要比较的属性,则应将它们放入WHERE部分:

代码语言:javascript
复制
SELECT User FROM Relation left join Contacts on (Relation.field = Contacts.field) WHERE User = Number

顺便说一句,您应该注意,您放入SQL字符串中的所有变量都被正确转义,以防止SQL注入。

编辑:根据评论,我试着做一个例子:

如果您想要具有相应Contacts.Number的所有用户的列表,那么可以这样写:

代码语言:javascript
复制
SELECT Relation.User FROM Relation INNER JOIN Contacts ON (Relation.User = Contacts.Number)

结果将是一个列表行,每行包含一个Relation.User值。现在您可以遍历这些行,并生成一个类似于8,77,81,...的字符串。

要更新表,您可以像这样编写两个更新:

代码语言:javascript
复制
UPDATE Contacts SET Echo = 'thumbsup' WHERE Contacts.Number IN (8,77,81);
UPDATE Contacts SET Echo = 'thumbsdown' WHERE Contacts.Number NOT IN (8,77,81);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9591996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档