使用PHP end()函数分配新的id

时间:2012-10-21 08:38:36

标签: php mysql pdo

我有数据库表的问题。我使用整数变量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.

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以生成序列号。