如何在MySQL中同时删除和更新数据

时间:2013-02-21 11:33:53

标签: php mysql

基本上我要做的是当我删除I​​D为6的客户端并且我有50个客户端时,我想要更新ID为50到6的客户端。

这是我的代码,在PHP中,但它不会同时执行2 mysql_query - s,至少我认为这是问题所在。否则SQL语法可以正常工作。

public function delete () {
    $last=$this->numrow; //contains last ID works fine

    if (isset ($_GET['x'])) {
        mysql_query('DELETE FROM proba WHERE ID ='.$_GET['x']);
        mysql_query('UPDATE proba SET ID='.(int)$_GET['x'].'WHERE ID='.(int)$last);
    }
}

$_GET['x']包含点击它的ID。但是只有第一个mysql_query被执行,我该怎么做,所以第二个也被执行了?

另一个问题是,<a href="munka/index.php?x=5" > [-] </a>可以获得$_POST x = 5吗?

5 个答案:

答案 0 :(得分:0)

使用mysql的替换查询可以省去很多麻烦: 见http://dev.mysql.com/doc/refman/5.6/en/replace.html 详情。

答案 1 :(得分:0)

很可能你在第一个查询时遇到了php错误。检查php错误日志。

对于第二个问题$_GET用于从URL中获取参数,例如

munka/index.php?x=5

$_POST用于获取http帖子上发布的参数(通常在表单提交上)。

答案 2 :(得分:0)

只需在where子句

之前用空格更改更新查询
 mysql_query('UPDATE proba SET ID='.(int)$_GET['x'].' WHERE ID='.(int)$last);

答案 3 :(得分:0)

最好使用InnoDB Mysql数据库引擎来使用事务支持,因此删除和更新一起执行wuth COMMIT而不会错过,如果出现任何问题,您的删除更改将获得ROLLBACK

答案 4 :(得分:-1)

 if (isset($_GET['x'])) {
        mysql_query('DELETE FROM proba WHERE ID =' . $_GET['x']);
        mysql_query('ALTER TABLE `proba`  DROP `ID`;');
        mysql_query('ALTER TABLE  `proba` ADD  `ID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST');
    }

尝试使用Phpmyadmin删除5号记录并删除id列并重新创建id列。 这是工作。