嗨,伙计们,当我试图更新我的桌子时,我遇到了一些问题。 我只是解释一下我的情况: 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次更新的方法 任何想法?
答案 0 :(得分:1)
您需要以其他顺序执行查询。 $moveup
和$getprevposition
的相同值,因此您目前正在做类似的事情
new
id = x
old
position = new
由于您刚刚将position
更改为new
,因此第二个WHERE
将捕获您已编辑的项目(并撤消编辑)。相反,你应该这样做
old
position = new
new
id = x
现在您没有冲突,因为您真正想要更改的行还没有position = new
。