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(); 

非常感谢提前,因为我已经打破我的头这一个几乎已经一整天。 (也许它的东西,小的和愚蠢的)

+3

请出示表方案。你有一个自动增量表字段吗? –

+0

您在查询中使用特定的链接标识符($ this-> db),但不适用于insert_id。这可能会导致它看起来与整个其他连接。 “如果未指定链接标识符,则假定由mysql_connect()打开的最后一个链接。” – PtPazuzu

+0

@ Topener:是的,我有自动增量表字段。\t ID \t Int(11)\t Nee \t Geen \t AUTO_INCREMENT @PtPazuzu我该如何解决问题? (谢谢你的回答:) – user750079

按照manual mysql_insert_id回报:

一个AUTO_INCREMENT列在前面的查询上 成功生成的ID,0如果先前的查询不产生AUTO_INCREMENT 值,如果没有建立MySQL连接,则返回FALSE。

由于它不给你false而不是正确的数字,它表明查询表没有生成自动增量值。

有两种可能性,我能想到的:

  1. 你的表没有一个AUTO_INCREMENT场
  2. 既然你不提供链接到mysql_insert_id(),但使用具有的mysql_query链接()它可能不是在检索最后插入的id时查询的正确表格。

解决方案:

  1. 确保它有一个AUTO_INCREMENT场
  2. 提供的链接藏汉:$waarde = mysql_insert_id($this->db);
+0

ID是一个auto_increment字段,但是如何解决它,如果是第二个问题呢? – user750079

+0

@ user750079尝试用'$ this-> db'调用'mysql_insert_id',正如我在回答 – Marcus

+0

@ Marcus对不起,我重读了它,但它工作,非常感谢你,我很愚蠢地写而不是$ this-> db; $ insert,$ result(换句话说,所有其他变量,但忘记了$ 。这一点)非常感谢您 – user750079

这可能是你的INSERT查询不成功 - 例如,也许您是否试图在数据必须唯一的列上插入重复数据?

如果ID确实设置为自动增量,并且仍然得到'0'作为您的响应做了一个列和值计数我只有后来经历了这一点,我注意到我的列数不符合值计数。

Codeigniter在调用mysql_insert_id()时有一个奇怪的行为。该函数在第一次调用后返回0。所以调用它两次将返回0

使用一个变量,而不是调用函数多次的:

$id = mysql_insert_id();