0

这是我的桌子:

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

4

1 回答 1

0

您使用 INSERT IGNORE 是否有特殊原因?

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

参考 pass 列,因为您尚未定义要插入其中的任何内容,并且它具有 NOT NULL 约束。

编辑: 也参考邮件列,因为你有一个 UNIQUE 约束。

于 2012-06-08T05:08:50.887 回答