mysql_insert_id()返回0
我知道有很多标题相同的主题。但主要是它被插入错误的地方的查询。但我认为我把它放在了正确的位置。 所以问题是,即使数据插入到数据库中,我仍然得到0。 有人知道答案,我可能是错的吗?mysql_insert_id()返回0
这里是我的代码:
mysql_query('SET NAMES utf8');
$this->arr_kolommen = $arr_kolommen;
$this->arr_waardes = $arr_waardes;
$this->tabel = $tabel;
$aantal = count($this->arr_kolommen);
//$sql="INSERT INTO `tbl_photo_lijst_zoekcriteria` (`PLZ_FOTO` , `PLZ_ZOEKCRITERIA`,`PLZ_CATEGORIE`)VALUES ('$foto', '$zoekje','$afdeling');";
$insert = "INSERT INTO ".$this->tabel." ";
$kolommen = "(";
$waardes = " VALUES(";
for($i=0;$i<$aantal;$i++)
{
$kolommen .=$this->arr_kolommen[$i].",";
$waardes .="'".$this->arr_waardes[$i]."',";
}
$kolommen = substr($kolommen,0,-1).")";
$waardes = substr($waardes,0,-1).")";
$insert .=$kolommen.$waardes;
$result = mysql_query($insert,$this->db) or die ($this->sendErrorToMail(str_replace(" ","",str_replace("\r\n","\n",$insert))."\n\n".str_replace(" ","",str_replace("\r\n","\n",mysql_error()))));
$waarde = mysql_insert_id();
非常感谢提前,因为我已经打破我的头这一个几乎已经一整天。 (也许它的东西,小的和愚蠢的)
按照manual mysql_insert_id回报:
一个AUTO_INCREMENT列在前面的查询上 成功生成的ID,0如果先前的查询不产生AUTO_INCREMENT 值,如果没有建立MySQL连接,则返回FALSE。
由于它不给你false
而不是正确的数字,它表明查询表没有生成自动增量值。
有两种可能性,我能想到的:
- 你的表没有一个AUTO_INCREMENT场
- 既然你不提供链接到mysql_insert_id(),但使用具有的mysql_query链接()它可能不是在检索最后插入的id时查询的正确表格。
解决方案:
- 确保它有一个AUTO_INCREMENT场
- 提供的链接藏汉:
$waarde = mysql_insert_id($this->db);
ID是一个auto_increment字段,但是如何解决它,如果是第二个问题呢? – user750079
@ user750079尝试用'$ this-> db'调用'mysql_insert_id',正如我在回答 – Marcus
@ Marcus对不起,我重读了它,但它工作,非常感谢你,我很愚蠢地写而不是$ this-> db; $ insert,$ result(换句话说,所有其他变量,但忘记了$ 。这一点)非常感谢您 – user750079
这可能是你的INSERT查询不成功 - 例如,也许您是否试图在数据必须唯一的列上插入重复数据?
如果ID确实设置为自动增量,并且仍然得到'0'作为您的响应做了一个列和值计数我只有后来经历了这一点,我注意到我的列数不符合值计数。
Codeigniter在调用mysql_insert_id()时有一个奇怪的行为。该函数在第一次调用后返回0。所以调用它两次将返回0
使用一个变量,而不是调用函数多次的:
$id = mysql_insert_id();
请出示表方案。你有一个自动增量表字段吗? –
您在查询中使用特定的链接标识符($ this-> db),但不适用于insert_id。这可能会导致它看起来与整个其他连接。 “如果未指定链接标识符,则假定由mysql_connect()打开的最后一个链接。” – PtPazuzu
@ Topener:是的,我有自动增量表字段。\t ID \t Int(11)\t Nee \t Geen \t AUTO_INCREMENT @PtPazuzu我该如何解决问题? (谢谢你的回答:) – user750079