4

基本上,我有一个用于通用 SQL 语句的 PHP 类:

  1. object.table('table_name')'table_name'用从 table_schema 中拉出的列名填充一个数组

  2. object.insert(data_array)'table_name'使用列数组和 data_array运行插入语句

  3. object.select('where')'table_name'使用 where 语句输入返回所有内容或不返回任何内容

我这样做是因为我很懒,我想让我的代码更漂亮。但是,模式查找会返回ID我的表中的列,这很好,因为有时我需要将它与object.select(). 但是,这object.insert()有点困难。

是否有一些我不知道的 SQL 功能可以让您准确地插入自动递增的列,或者在我眼前是否有更简单的解决方案,而我只是一个彻头彻尾的白痴。

4

3 回答 3

2

无法插入自动递增的列。您可以执行插入(绕过自动递增字段)并接受自动生成的 id ...

于 2012-10-09T23:03:12.347 回答
1

您需要从插入语句中省略 id 列并用于last_insert_id()获取最后插入的键

于 2012-10-09T23:04:42.347 回答
1

不确定您使用的是哪个 rdbms,但在 SQL Server 中,您可以通过以下方式允许插入标识列:

SET IDENTITY_INSERT dbo.MyTable ON

但我不确定你为什么要这样做......

相反,当您这样做时:object.table('table_name'),收集的不仅仅是列名,例如 ColumnName、DataType、IsIdentity 等。它可以是多维数组,也可以是一个类。

然后在插入/选择时,您可以过滤掉 IsIdentity 的列。在构造插入时,了解数据类型也很有帮助。

于 2012-10-09T23:26:23.483 回答