我正在编写一个脚本,该脚本在表格中显示数据库中的记录。 上次我想通过添加"删除"来改进我的脚本。每个表格旁边的选项&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 ;;
我得到了结果
表定义不正确;只有一个自动列和它 必须定义为键
答案 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