两个查询更新不起作用

时间:2014-06-08 10:21:43

标签: 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>    

               <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
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';}

              ?>

现在它总是只做一次更新,如果我评论第一次更新第二次工作正常如果我评论第二次更新第一次工作正常,但如果我取消注释它并想要一起做它总是做一次更新。我在寻找一些如何同时进行2次更新的方法 任何想法?

1 个答案:

答案 0 :(得分:1)

您需要以其他顺序执行查询。 $moveup$getprevposition相同值,因此您目前正在做类似的事情

  • 将位置更改为new
  • id = x
  • 将位置更改为old
  • position = new

由于您刚刚将position更改为new,因此第二个WHERE将捕获您已编辑的项目(并撤消编辑)。相反,你应该这样做

  • 将位置更改为old
  • position = new
  • 将位置更改为new
  • id = x

现在您没有冲突,因为您真正想要更改的行还没有position = new