Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么自动增量返回null?_Php_Mysql_Sql_Auto Increment - Fatal编程技术网

Php 为什么自动增量返回null?

Php 为什么自动增量返回null?,php,mysql,sql,auto-increment,Php,Mysql,Sql,Auto Increment,我正在编写一个web应用程序,它将向MySQL数据库表中插入新记录。除了主键之外,大多数信息都是用户提供的,我希望使用自动增量获得主键。从web应用程序运行以下查询时: SELECT Auto_Increment FROM information_schema.tables WHERE table_name='charlist'; 它不返回任何内容—我通过将查询结果存储在变量中进行检查,然后echoing该变量,没有输出任何内容。我还使用MySQL控制台运行了这个查询,它返回了以下结果: +-

我正在编写一个web应用程序,它将向MySQL数据库表中插入新记录。除了主键之外,大多数信息都是用户提供的,我希望使用自动增量获得主键。从web应用程序运行以下查询时:

SELECT Auto_Increment FROM information_schema.tables WHERE table_name='charlist';
它不返回任何内容—我通过将查询结果存储在变量中进行检查,然后
echo
ing该变量,没有输出任何内容。我还使用MySQL控制台运行了这个查询,它返回了以下结果:

+----------------+
| Auto_Increment |
+----------------+
|           NULL |
+----------------+
我的表肯定有一个主键字段,它有5条记录,其中主键字段已填充。这是表格的结构

+----------------+-------------+------+-----+---------+-------+
| Field          | Type        | Null | Key | Default | Extra |
+----------------+-------------+------+-----+---------+-------+
| id             | int(11)     | NO   | PRI | NULL    |       |
| bookIntroduced | int(11)     | YES  |     | NULL    |       |
| pageIntroduced | int(11)     | YES  |     | NULL    |       |
| title          | varchar(50) | YES  |     | NULL    |       |
| forename       | varchar(50) | YES  |     | NULL    |       |
| surname        | varchar(50) | YES  |     | NULL    |       |
| oldSurname     | varchar(50) | YES  |     | NULL    |       |
| alias          | varchar(50) | YES  |     | NULL    |       |
| regnalNumber   | varchar(5)  | YES  |     | NULL    |       |
+----------------+-------------+------+-----+---------+-------+
+----+-----------+---------+
| id | forename  | surname |
+----+-----------+---------+
|  1 | Waymar    | Royce   |
|  3 | Mance     | Rayder  |
|  4 | Gared     |         |
|  5 | Tristifer | Mudd    |
|  6 | Edric     | Dayne   |
+----+-----------+---------+
这是表中已有的5条记录的几个字段

+----------------+-------------+------+-----+---------+-------+
| Field          | Type        | Null | Key | Default | Extra |
+----------------+-------------+------+-----+---------+-------+
| id             | int(11)     | NO   | PRI | NULL    |       |
| bookIntroduced | int(11)     | YES  |     | NULL    |       |
| pageIntroduced | int(11)     | YES  |     | NULL    |       |
| title          | varchar(50) | YES  |     | NULL    |       |
| forename       | varchar(50) | YES  |     | NULL    |       |
| surname        | varchar(50) | YES  |     | NULL    |       |
| oldSurname     | varchar(50) | YES  |     | NULL    |       |
| alias          | varchar(50) | YES  |     | NULL    |       |
| regnalNumber   | varchar(5)  | YES  |     | NULL    |       |
+----------------+-------------+------+-----+---------+-------+
+----+-----------+---------+
| id | forename  | surname |
+----+-----------+---------+
|  1 | Waymar    | Royce   |
|  3 | Mance     | Rayder  |
|  4 | Gared     |         |
|  5 | Tristifer | Mudd    |
|  6 | Edric     | Dayne   |
+----+-----------+---------+

那么,当表中有带有效主键的记录时,为什么自动增量返回NULL呢?

因为
id
列未标记为默认值
Auto\u Increment

您的键是主键,但未设置为自动增量。 请把你的桌子改成这样

ALTER TABLE `charlist`     CHANGE `id` `id` INT(11) NOT NULL AUTO_INCREMENT ;

是否可以选择自动增量?只需在sql
alter表`charlist`change`id``id`INT(11)notnull auto_increment中运行即可
或者只看@shahzad answer这太棒了,自动增量查询现在可以在MySQL控制台中正常工作。不过,我很难让它与PHP一起工作,如果我想不出来,我会回来的。好吧,我想不出来。我试图将自动递增的结果放入一个变量中,但当我回显变量时,我还是一无所获<代码>$id=$conn->query(“从信息_schema.tables中选择自动增量,其中table_name='$tablename'”)里面好像没有打字错误,但我不确定。