繁体   English   中英

PHP中的多行语句到MySQL数据库(重新排列自动递增的ID)

[英]Multi line statement in PHP to MySQL database (resorting auto incremented IDs)

我有一个问题,找出错误的来源。 背景是我有一个表,并使用表单将值更新到表中,并且可以使用不同的按钮来更新和删除它们。

删除后,这会使自动递增的ID处于混乱状态,我认为这是一个很好的做法,看看我是否可以使用简单的按钮重置订单。

否则我一直在使用

SET @num := 0;

UPDATE tableName SET id = @num := (@num+1);

ALTER TABLE tableName AUTO_INCREMENT = 1;

在phpmyadmin中。 我从这个答案中得到的: 在MySQL中删除后自动递增

//resort database
if(isset($_POST['resort'])){

// Database connection opening
$mysqli = NEW MySQLi('localhost','root','','powerstations');  //our server, the username, the password (empty), the database itself
    if($mysqli) {
        echo "Connected!";
        } else {
    echo "Problem.";
}


$sql_resort = "SET @num := 0; ";
$sql_resort .= "UPDATE powerdata SET id = @num := (@num+1); ";
$sql_resort .= "ALTER TABLE powerdata AUTO_INCREMENT = 1; ";

if ($mysqli->query($sql_resort) === TRUE) {
    echo "Resorted successfully";
    } else {
    echo "Error: " . $sql_resort . "<br>" . $mysqli->error;
}

$mysqli->close();

我得到的错误是:SET @num:= 0; 更新powerdata SET id = @num:=(@ num + 1); ALTER TABLE powerdata AUTO_INCREMENT = 1;

您的SQL语法有误; 检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在'UPDATE powerdata SET id = @num:=(@ num + 1)附近使用; 第1行的ALTER TABLE powerdata AUTO_INCREMENT'

我试图通过将多行语句放入phpmyadmin中来搜索拼写错误,但一无所获,而且我不知道“代码结构”的问题在哪里。

尝试在单个查询中执行多个语句时,必须调用$mysqli->multi_query($sql)而不是$mysqli->query($sql)

所以你需要更新

if ($mysqli->query($sql_resort) === TRUE) {}

if ($mysqli->multi_query($sql_resort) === TRUE) {

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM