这是我的表:
CREATE TABLE `users` (
`id` int(10) unsigned NOT NULL auto_increment,
`name` varchar(20) NOT NULL default '',
`pass` varchar(32) NOT NULL default '',
`lang` varchar(2) default NULL,
`locale` varchar(2) default NULL,
`pic` varchar(255) default NULL,
`sex` char(1) default NULL,
`birthday` date default NULL,
`mail` varchar(64) default NULL,
`created` timestamp NOT NULL default CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `mail` (`mail`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=27 ;
这是我的疑问:
$query = "INSERT IGNORE INTO `users` (`name`, `mail`, `birthday`, `lang`, `locale`, `sex`, `pic`) VALUES ('".$name."', '".$email."', '".date_format($birthdaynew, 'Y-m-d H:i:s')."', '".substr($locale, 0, 2)."', '".substr($locale, -2, 2)."', '".$sex."', 'pic/".$uid.".jpg')";
$rows = mysql_query($query) or die("Failed: " . mysql_error());
$_SESSION['id'] = mysql_insert_id(); // I have tryed also mysql_insert_id($db_con) where $db_con is the link to db.
$_SESSION['name'] = $name;
$ _ SESSION [' name']正确包含名称,但$ _SESSION [' id']包含0。 为什么? 我疯了!
答案 0 :(得分:0)
您使用INSERT IGNORE有特殊原因吗?
如果使用INSERT IGNORE,那么如果存在重复键(PRIMARY或UNIQUE),或者将NULL插入到具有NOT NULL约束的列中,则实际上不会插入该行。
引用pass列,因为你没有定义要插入的内容,并且它有NOT NULL约束。
编辑: 还可以参考mail列,因为你有一个UNIQUE约束。