Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么mysql\u insert\u id在我的情况下返回0?_Php_Mysql - Fatal编程技术网

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”列中的数据以前没有被输入吗?它具有唯一的约束。是的,我在尝试此查询之前删除了数据库…因此在数据库中没有任何内容。