ALTER TABLE解析错误:语法错误,意外T_STRING

时间:2013-05-25 22:55:13

标签: php mysql alter-table

我有点问题 这是我的代码 `

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,任何人都可以帮助我吗?

4 个答案:

答案 0 :(得分:2)

你不觉得这里有什么可疑之处吗?

$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());;

如果你没有,我会很伤心,但是你没有。

只需将您的查询更改为

即可
$auto = "SELECT MAX(`ID`) FROM `$tbl_name` 
        ALTER TABLE $tbl_name AUTO_INCREMENT = $auto+1;

因为,$tbl_name;实际上结束了您的查询,所以在此之后您无法继续说ALTER TABLE $tbl_name AU,就像什么都没发生一样。

答案 1 :(得分:0)

您需要将查询作为字符串放在" "

答案 2 :(得分:0)

ALTER TABLE不是PHP命令。如果要在数据库中执行此SQL查询,则必须将其作为字符串参数发送到mysql_query()

mysql_query("ALTER TABLE $tbl_name AUTO_INCREMENT = $auto+1;");

答案 3 :(得分:0)

您应该非常小心地公开分享您的主机名,用户名和密码,因为现在每个人都可以访问您的数据库,如果他们找到了正确的网址或知道您的主机服务器在哪里! 在发布之前用虚假数据加以虚假是一个很好的建议。