我有一个问题,弄清楚错误来自哪里。 背景是我有一个表并使用表单我将值更新到表中并可以更新它们并使用不同的按钮删除它们。
这使得自动递增的ID在删除后无序,我认为这是一个好习惯,看看我是否可以使用一个简单的按钮重置订单。
否则我一直在使用
更新它们SET @num := 0;
UPDATE tableName SET id = @num := (@num+1);
ALTER TABLE tableName AUTO_INCREMENT = 1;
在phpmyadmin中。我从这个答案得到了它: Auto Increment after delete in 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; UPDATE powerdata SET id = @num:=(@ num + 1); ALTER TABLE powerdata AUTO_INCREMENT = 1;
您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以便使用接近&#39;更新powerdata SET id = @num:=(@ num + 1)的正确语法; ALTER TABLE powerdata AUTO_INCREMENT&#39;在第1行
我试图通过将多行语句放入phpmyadmin来搜索拼写错误,但没有找到任何内容,我也没有看到&#34;代码结构的问题在哪里?#34;如果有的话。
答案 0 :(得分:1)
尝试在单个查询中执行多个语句时,您必须调用$mysqli->multi_query($sql)
而不是$mysqli->query($sql)
。
所以你需要更新
if ($mysqli->query($sql_resort) === TRUE) {}
到
if ($mysqli->multi_query($sql_resort) === TRUE) {