Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.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 如果数据库中存在行中的数据,如何绕过?_Php_Mysql - Fatal编程技术网

Php 如果数据库中存在行中的数据,如何绕过?

Php 如果数据库中存在行中的数据,如何绕过?,php,mysql,Php,Mysql,我的表包含id和组 id group 1 alpha 2 beta 3 omega 我的验证代码是: $validate_query = "SELECT * FROM table_test WHERE id = '{$id}' "; $rs = mysql_query($validate_query,$connection); if(mysql_num_rows($rs

我的表包含id和组

id        group
 1        alpha
 2        beta
 3        omega
我的验证代码是:

$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);  

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

您只需将查询更改为-

$validate_query = "SELECT * FROM table_test WHERE group = '{$group}' ";

将查询字符串更改为:

$validate_query = "SELECT * FROM table_test WHERE group = '{$group}' AND id != '{$id}'";
如果您想在任何情况下都进行数据库操作。比:

                $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);  

您可以对列组使用
唯一约束
因此,当您尝试使用重复值进行更新时,更新将触发错误

另一个解决方案是在update语句中添加and
exist
子句

即:


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

使用MYSQLI而不是MYSQL。您正在使用的函数已弃用!!先生如果用户仍将其重命名为表中的现有数据,该怎么办。。。然后有一个重复。不,不会,如果您查看上面的查询,它将在表中查找$group,该表包含用户输入的group的文本。。因此,如果它存在,查询将生成,您的if语句将触发回显消息的条件,而不是更新表的else块..先生。。。我的愿望是这样的,假设alpha是我们的获取数据。。。如果alpha将其重命名为beta=>则返回alpha;如果alpha重命名为bravo=>则重命名为bravo。。。。。。因为bravo在databaseyes bee中不存在,所以如果该值已经存在,它将完全不重命名。。只有当它不存在时才会重命名。。你试过那个密码了吗?让我们来看看。还是不懂逻辑sir@Bee您希望在任何情况下都进行数据库操作吗?还是只是试图限制重复?您可以限制上述查询的重复。我已经做过很多次了。
                $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);  
UPDATE table_test 
   SET group= '{$group}'               
 WHERE id = '{$id}'
   AND NOT EXISTS ( select 1 
                      FROM table_test 
                     WHERE group= '{$group}'  )