【发布时间】:2013-05-25 22:55:13
【问题描述】:
我有一点问题 这是我的代码 `
if(isset($_POST['delete']))
{
$host="db1.xhost.ro"; // Host name
$username="supremesguild_01"; // Mysql username
$password="Blizzard951234"; // Mysql password
$db_name="supremesguild_xhost_ro01"; // Database name
$tbl_name="inventar"; // Table name
/*
$host="localhost"; // Host name
$username="root"; // Mysql username
$password=""; // Mysql password
$db_name="acilogin"; // Database name
$tbl_name="inventar"; // Table name
*/
// Connect to server and select database.
$con = mysql_connect($host, $username, $password)or die("cannot connect");
// Get values from form
$id=$_POST['id'];
mysql_select_db($db_name, $con)or die("cannot select DB");
// modify data into mysql
$sql="DELETE FROM `$tbl_name` WHERE `ID` =$id LIMIT 1 ; ";
$auto = "SELECT MAX(`ID`) FROM `$tbl_name`";
ALTER TABLE $tbl_name AUTO_INCREMENT = $auto+1; //this is line 29
$result=mysql_query($sql, $con)or die('Could not delete data: ' . mysql_error());;
// if successfully insert data into database, displays message "Successful".
if($result){
header("Location:http://supremesguild.xhost.ro/index.php?pagina=delete_success");
}
else {
header("Location:http://supremesguild.xhost.ro/index.php?pagina=delete_failed");
}
mysql_close($con);
mysql_close();
}
我得到这个错误:解析错误:语法错误,第 29 行 /home/www/free/xhost.ro/supremesguild.xhost.ro/delete.php 中的意外 T_STRING。
我试过了:ALTER TABLE "$tbl_name" AUTO_INCREMENT = $auto+1; 或
EXEC(ALTER TABLE $tbl_name AUTO_INCREMENT = $auto+1;) 但它说 exec 出于安全目的已被禁用
我只想在每次删除后重置 AUTO_INCREMENT,有人可以帮我吗?
【问题讨论】:
-
请注意,
SELECT MAX(ID) FROM$tbl_name` 没有被执行,因为它没有被交给mysql_query。您要针对数据库运行的每条语句都必须通过 mysql_query 甚至更好的 mysqli_query 执行:stackoverflow.com/questions/8891443/… -
请查看 SQL-Injections (en.wikipedia.org/wiki/SQL_injection)。你必须在这里清理
$_POST['id']以确保它是一个数字。例如像这样:$id = (int) $_POST['id'] -
你可能想在那里编辑你的密码!
标签: php mysql alter-table