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) がある場合、または NOT NULL 制約を持つ列に NULL を挿入すると、行は実際には挿入されません。

挿入するものを何も定義しておらず、NOT NULL 制約があるため、pass 列を参照します。

編集: UNIQUE 制約があるため、メール列も参照します。

于 2012-06-08T05:08:50.887 に答える