首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果数据库中存在一行数据,如何绕过?

问如果数据库中存在一行数据,如何绕过?
EN

Stack Overflow用户
提问于 2015-08-10 08:32:53
回答 3查看 133关注 0票数 0

我的表包含id和group。

代码语言:javascript
复制
id        group
 1        alpha
 2        beta
 3        omega

我的验证代码是:

代码语言:javascript
复制
$validate_query = "SELECT * FROM table_test WHERE id = '{$id}' ";
                $rs = mysql_query($validate_query,$connection);
                if(mysql_num_rows($rs) != 0) {
                    echo "<span class='confirmation'>Oops! Data exist. Try another one.</span>";
                } 
                else { 

                    $query = "UPDATE table_test SET 
                            group= '{$group}'               
                            WHERE id = '{$id}'                      
                            ";
                    $result = mysql_query($query, $connection);  

但我的目标是这样..。

代码语言:javascript
复制
**example:**
if the user want to edit the field group value(ex. alpha) into (beta).. 
then the value of id 1 and 2 is beta... 

现在我只想检查值是否存在..。我只想拿回原来的值(alpha),这样就不会有重复.

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-08-10 08:43:07

好吧,你只需要把你的查询改为-

代码语言:javascript
复制
$validate_query = "SELECT * FROM table_test WHERE group = '{$group}' ";
票数 2
EN

Stack Overflow用户

发布于 2015-08-10 08:52:23

将查询字符串更改为:

代码语言:javascript
复制
$validate_query = "SELECT * FROM table_test WHERE group = '{$group}' AND id != '{$id}'";

如果你想在每种情况下都进行数据库操作。超过:

代码语言:javascript
复制
                $validate_query = "SELECT * FROM table_test WHERE group = '{$group}' AND id != '{$id}'";
                $rs = mysql_query($validate_query,$connection);
                if(mysql_num_rows($rs) != 0) {
                    $query = "UPDATE table_test SET 
                            group= group               
                            WHERE id = '{$id}'";


                } 
                else { 

                    $query = "UPDATE table_test SET 
                            group= '{$group}'               
                            WHERE id = '{$id}'";
                 }
                 $result = mysql_query($query, $connection);  
票数 0
EN

Stack Overflow用户

发布于 2015-08-10 09:57:05

您可以在列组中使用unique constraint,因此当您尝试使用重复值进行更新时,更新将触发一个错误。

其他解决方案是在update语句中添加和exist子句。

ie:

代码语言:javascript
复制
UPDATE table_test 
   SET group= '{$group}'               
 WHERE id = '{$id}'
   AND NOT EXISTS ( select 1 
                      FROM table_test 
                     WHERE group= '{$group}'  )

现在,该语句将不会触发错误,您可能必须检查更新了多少行,以确定组是否已经存在。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31915003

复制
相关文章

相似问题

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