在PHP中选择 - 寻找ID MySQL

时间:2014-05-10 09:18:48

标签: php mysql select

我正在编写一个脚本,该脚本在表格中显示数据库中的记录。 上次我想通过添加"删除"来改进我的脚本。每个表格旁边的选项&tr; s tr。 当我想删除一条记录时,我使用删除查询,一切都很好。问题是,当我想添加一条记录时,它会重复(可能,因为我在数据库中使用计数行然后从中获取id)。我开始思考 - "如何正确地继续添加下一条记录,而不会干扰其他ID"然后我有一个想法从表中获得MAX值而不是增加它,这就是问题所在。 我有这样的操作:

$sql = "SELECT Id FROM `table` where Id = (SELECT max(Id) FROM table)"

在PHPmyAdmin中它起作用,它返回MAX Id,但是我不能将返回的值赋给变量然后递增它(STRING错误或smth真的不记得)。
接下来做什么?当我想只获得一个值时,使用此值创建一个变量并将其递增以获取数据库中的下一个ID?如何通过页面进行最佳添加和删除记录的任何其他更好的想法?

更新: 我试图制作一个自动增量列,但是当我像这样制作时:

  

$ sql =" CREATE TABLE表(Id INT NOT NULL AUTO_INCREMENT,Nick   CHAR(30),Xpos INT,Ypos INT,Punkty INT,Ratuszlvl INT,Koszarylvl   INT,Stajnialvl INT,Warsztatlvl INT,Kuznialvl INT,Ryneklvl INT,   Tartaklvl INT,Cegielnialvl INT,Hutalvl INT,Zagrodalvl INT,   Spichlerzlvl INT,Schoweklvl INT,Murlvl INT,Palaclvl INT,Data DATE,   Czas TIME)&#34 ;;

我得到了结果

  

表定义不正确;只有一个自动列和它   必须定义为键

2 个答案:

答案 0 :(得分:1)

让id为自动增量数据库模式(would be {value for column a})。 (这就是为什么它没有在insert语句中分配。)

就这样做:

INSERT INTO `table` VALUES({value for column b}, {value for column c})

以下是一个例子:

<强> DB-模式

Name of table: 
    groovy_machines

Columns:
    id (autoincrement, primary key)
    name (varchar, name of groovymachine)
    color (int, color of groovy machine)

<强>插入

INSERT INTO 'groovy_machines' (
    'wonderhelicopter',5, 
    'grasshopperbike', 10,
    'dontgemewrongstoppermachine', 12
);

<强>更新 创建自动增量列时,还必须将其指定为主键,就像mysql错误一样。

CREATE TABLE `groovy_machines` (
    `id` int( 11 ) NOT NULL AUTO_INCREMENT ,
    PRIMARY KEY ( `id` )
)

您创建的表格可能如下所示:

CREATE TABLE `table` (
    `id` int( 11 ) NOT NULL AUTO_INCREMENT ,
    `Nick` CHAR(30), 
    `Xpos` INT, 
    `Ypos` INT, 
    `Punkty` INT, 
    `Ratuszlvl` INT, 
    `Koszarylvl` INT, 
    `Stajnialvl` INT, 
    `Warsztatlvl` INT, 
    `Kuznialvl` INT, 
    `Ryneklvl` INT, 
    `Tartaklvl` INT, 
    `Cegielnialvl` INT, 
    `Hutalvl` INT, 
    `Zagrodalvl` INT, 
    `Spichlerzlvl` INT, 
    `Schoweklvl` INT, 
    `Murlvl` INT, 
    `Palaclvl` INT,
    `Data` DATE, 
    `Czas` TIME,    
    PRIMARY KEY ( `id` )
)

答案 1 :(得分:0)

使用 max(Id)+1 ,这样它会直接为您提供增量值并直接存储到变量中。

把:

SELECT max(Id)+1 FROM table