我有数据库表的问题。我使用整数变量Id来排序表的所有元素。
我想要什么? 无论何时,都会添加一个新问题。它被分配了一个新的id,比我数据库中最后一个问题的ID大1。
以下是我的工作:
include('dbconnect.php');
$ids = $connection->prepare('SELECT * FROM question ORDER BY id ASC');
$ids->execute(array());
$result = $ids->fetchAll(PDO::FETCH_ASSOC);
$new_id = end($result['id']); //Error in this line.
$new_id = $new_id + 1;
但是,我总是得到错误
Warning: end() expects parameter 1 to be array, null given in /Applications/MAMP/htdocs/question/submit.php on line 20
我正在使用FetchAll
语句,所以我觉得应该返回一个数组。任何人都可以找出错误的位置。
添加到数据库的每个新问题的ID都为1.
答案 0 :(得分:2)
正如Using AUTO_INCREMENT
所述:
AUTO_INCREMENT
属性可用于为新行生成唯一标识:CREATE TABLE animals ( id MEDIUMINT NOT NULL AUTO_INCREMENT, name CHAR(30) NOT NULL, PRIMARY KEY (id) ); INSERT INTO animals (name) VALUES ('dog'),('cat'),('penguin'), ('lax'),('whale'),('ostrich'); SELECT * FROM animals;返回:
+----+---------+ | id | name | +----+---------+ | 1 | dog | | 2 | cat | | 3 | penguin | | 4 | lax | | 5 | whale | | 6 | ostrich | +----+---------+没有为
AUTO_INCREMENT
列指定值,因此MySQL会自动分配序列号。您还可以明确地为列分配NULL
或0以生成序列号。