有数据库
CREATE TABLE IF NOT EXISTS `users` (
`id` int(8) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(64) COLLATE utf8_unicode_ci NOT NULL,
`email` varchar(128) COLLATE utf8_unicode_ci NOT NULL,
`pass` varchar(128) COLLATE utf8_unicode_ci NOT NULL,
`reg_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`),
UNIQUE KEY `name` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=40 ;
然后在php中我尝试插入新用户,只设置用户名/电子邮件/传递
mysql_query("INSERT INTO `users` SET name='".$user."', email='".$email."', `pass = '".$pass."' ");
if (mysql_affected_rows($GLOBALS['link'])!=1) {
echo 'user/email exist';
die();
} else {
echo 'user created';
}
或者我只需要在每个新查询中都知道新的id:
INSERT INTO `users` (`id`, `name`, `email`, `pass`, `reg_time`) VALUES
(1, 'user', 'user@server.com', 'pass', '2016-01-31 03:10:13');
名称和电子邮件是UNIQUE,时间是默认的当前时间戳,我不需要测试它们。这很好,但我怎么可以插入id,我需要它吗?
在本地phpmyadmin上进行测试并没有给我任何新的东西。
答案 0 :(得分:1)
mysql_query("INSERT INTO `users` ( `name`, `email`, `pass` ) values('".$user."', '".$email."', '".$pass."') ");
插入查询语法错误,您在代码中使用更新查询语法..
答案 1 :(得分:1)
你的插入查询有id,如果你的表没有任何id为1的记录,这是你的表的主键,那么它将正常工作。如果表具有并以id 1记录,那么它将导致致命错误。 注意: - 表的基本主键应自动递增。对于PHPMyadmin中的日期时间自动更新,设置CURRENT_DATETIME的列默认值。
INSERT INTO `users` (`name`, `email`, `pass`, `reg_time`) VALUES
('user', 'user@server.com', 'pass', '2016-01-31 03:10:13');
答案 2 :(得分:0)
omg,只是设置null,它很好用!!!!
INSERT INTO `users` (`id`, `name`, `email`, `pass`, `reg_time`) VALUES
(null, 'user', 'user@server.com', 'pass', null);