2012-06-08 97 views
0

這是我的表:爲什麼mysql_insert_id在我的情況下返回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 [ '名']正確包含名稱,但$ _SESSION [ '身份證']包含0。 爲什麼? 我要瘋了!

回答

0

爲什麼使用INSERT IGNORE有什麼特別的原因嗎?

如果使用INSERT IGNORE,那麼如果存在重複鍵(PRIMARY或UNIQUE)或將NULL插入到具有NOT NULL約束的列中,則實際上不會插入該行。

引用pass列,因爲您還沒有定義任何要插入的東西,並且它具有NOT NULL約束。

編輯: 還引用郵件列,因爲你有一個UNIQUE約束。

+0

是的,我正在使用插入IGNORE,因爲如果有一個重複無所事事。 – xRobot

+0

對於「傳遞」列,您有NOT NULL約束,所以您需要爲「傳遞」列插入某些內容。你可以嘗試添加一些東西,看看它是否仍然失敗? – ku6pk

+0

是的,但有「默認」'「。無論如何,如果通過插入的東西,我總是得到0 :( – xRobot

相關問題