[英]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.