簡體   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