为什么mysql_insert_id在我的情况下返回0?

时间:2012-06-08 05:02:59

标签: php mysql

这是我的表:

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。 为什么? 我疯了!

1 个答案:

答案 0 :(得分:0)

您使用INSERT IGNORE有特殊原因吗?

如果使用INSERT IGNORE,那么如果存在重复键(PRIMARY或UNIQUE),或者将NULL插入到具有NOT NULL约束的列中,则实际上不会插入该行。

引用pass列,因为你没有定义要插入的内容,并且它有NOT NULL约束。

编辑: 还可以参考mail列,因为你有一个UNIQUE约束。

相关问题