Php 两次查询更新不';行不通

Php 两次查询更新不';行不通,php,mysql,sql,Php,Mysql,Sql,嗨,伙计们,我在更新我的桌子时遇到了一个小问题。 我只是向你解释我的情况: index.php <?php $query = mysql_query("SELECT * FROM `references` ORDER BY `ID` ASC") or die(mysql_error()); while($referenc = mysql_fetch_assoc($query)){ echo ' <tr>

嗨,伙计们,我在更新我的桌子时遇到了一个小问题。 我只是向你解释我的情况: index.php

 <?php
          $query = mysql_query("SELECT * FROM `references` ORDER BY `ID` ASC") or die(mysql_error());
while($referenc = mysql_fetch_assoc($query)){
        echo '

        <tr>    

               <td>'.$referenc['name'].'</td>
               <td>'.$referenc['url'].'</td>
               <td>'.$referenc['date'].'</td>
               <td><a href="updatetest.php?id=' . $referenc['ID'] . '&move=up&position=' . $referenc['position'] . '">up</a></td>
               <td><a href="updatetest.php?id=' . $referenc['ID'] . '&move=down&position=' . $referenc['position'] . '">down</a></td> 
               <td><a href="showrefer.php?id=' . $referenc['ID'] . '">edit</a></td>
        </tr>    

            ';  
    }  


          ?>

你怎么能看到我有两个上下链接。 单击其中一个链接后,我将进入updatetest.php

updaterest.php f、 e

move=up
位置=2;
id=2;

您需要按照另一个顺序进行查询
$moveup
$getprevposition
具有相同的值,因此您当前正在执行类似的操作

  • 将位置更改为
    new
    ,其中
    id=x
  • 将位置更改为
    old
    ,其中
    position=new
由于您刚刚将
位置
更改为
新建
,因此第二个
位置
将捕获您已编辑的项目(并撤消编辑)。相反,你应该这样做

  • 将位置更改为
    old
    ,其中
    position=new
  • 将位置更改为
    new
    ,其中
    id=x
现在您没有冲突,因为您真正想要更改的行还没有
position=new

move = up
position = 2;
id = 2;



  <?php
            $move = $_GET['move'];

             if($move == "up"){
                    $getcurrentid = $_GET['id'];
                                $moveup = $_GET['position']-1;

                $getprevposition = $_GET['position']-1;
                $position = $_GET['position'];

               $query = mysql_query("UPDATE `references` SET  `position`  = '$moveup' WHERE `references`.`ID`='$getcurrentid'") or die(mysql_error());

$query2 = mysql_query("UPDATE `references` SET  `position`  = '$position' WHERE `references`.`position`='$getprevposition'") or die(mysql_error());

              }
              else{echo'down';}

              ?>