Php 为什么mysql\u insert\u id在我的情况下返回0?
这是我的桌子:Php 为什么mysql\u insert\u id在我的情况下返回0?,php,mysql,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(
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;
$\u会话['name']正确包含名称,但$\u会话['id']包含0。
为什么?
我快疯了 使用INSERT IGNORE有什么特殊原因吗 如果使用INSERT IGNORE,那么如果存在重复的键(主键或唯一键),或者在具有NOT NULL约束的列中插入NULL,则实际上不会插入该行 引用pass列,因为您没有定义任何要插入到其中的内容,并且它没有NULL约束 编辑:
也指邮件列,因为您对它有一个唯一的约束。是的,我使用INSERT IGNORE,因为如果存在重复的“不做任何事情”。您的“传递”列没有NULL约束,因此您需要为“传递”列插入一些内容。你能尝试添加一些东西到它,看看它是否仍然失败吗?是的,但是有“默认值”。无论如何,如果在pass中插入某些内容,我总是得到0:(那么您能确保您插入到“mail”列中的数据以前没有被输入吗?它具有唯一的约束。是的,我在尝试此查询之前删除了数据库…因此在数据库中没有任何内容。