Php 使用PDO和prepared语句更改MySQL表

Php 使用PDO和prepared语句更改MySQL表,php,mysql,pdo,prepared-statement,alter-table,Php,Mysql,Pdo,Prepared Statement,Alter Table,我在我的项目中使用了PDO和PHP和MySQL。一切正常,但我在执行以下代码时出错: $sql = "ALTER TABLE tbl_invoices AUTO_INCREMENT = ?"; $q = $db->prepare($sql); $q->execute(array($invoice_start)); 我想用PDO准备好的语句修改一个表。但我得到了一个错误: 致命错误:未捕获异常“PDOException”,消息为“SQLSTATE[42000]:语法错误或访问冲突

我在我的项目中使用了PDO和PHP和MySQL。一切正常,但我在执行以下代码时出错:

$sql = "ALTER TABLE tbl_invoices AUTO_INCREMENT = ?";
$q = $db->prepare($sql);
$q->execute(array($invoice_start));  
我想用PDO准备好的语句修改一个表。但我得到了一个错误:

致命错误:未捕获异常“PDOException”,消息为“SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解在第行“?”附近使用的正确语法

我测试了不同的解决方案,但没有一个解决不了。你知道吗

ALTER TABLE tbl\u invoices AUTO\u INCREMENT=?

首先,这就是你做错的地方

从未。曾经触摸。自动递增。 任何时候将其作为一个数字,都意味着数据库设计中存在严重的缺陷

一般来说,关于修改表-是的,大多数情况下您无法绑定

ALTER TABLE tbl\u invoices AUTO\u INCREMENT=?

首先,这就是你做错的地方

从未。曾经触摸。自动递增。 任何时候将其作为一个数字,都意味着数据库设计中存在严重的缺陷


一般来说,关于更改表格-是的,大多数时候你不能绑定。

你不能绑定那种方式不能对所有alter命令进行绑定?你不能绑定那种方式不能对所有alter命令进行绑定?既然我们不应该“永远不要碰自动递增”,那么使用AI字段进行排序是一个可怕的想法吗?例如,这一行是在这一行之前插入的吗?1)
在重复键更新时,当记录存在时,会使自动增量值膨胀。防止在自动增量中创建大间隙的能力非常好。2) MySQL和MariaDB阻止您将其设置为低于最大值的值。3) 如果您想确保不创建低于特定值的值(例如,如果您想稍后导入您知道具有最大ID的数据),设置自动增量ID也很有用。因为我们应该“永远不要接触自动增量”,使用AI字段进行订单是不是一个可怕的想法?例如,这一行是在这一行之前插入的吗?1)
在重复键更新时,当记录存在时,会使自动增量值膨胀。防止在自动增量中创建大间隙的能力非常好。2) MySQL和MariaDB阻止您将其设置为低于最大值的值。3) 如果要确保不创建低于特定值的值(例如,如果希望以后导入具有最大ID的数据),设置自动增量ID也很有用。