mysql_insert_id()返回0

时间:2011-11-23 14:04:09

标签: php mysql return 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();

非常感谢,因为我几乎已经整整一天都在为这个问题而烦恼。 (可能它是小而愚蠢的东西)

4 个答案:

答案 0 :(得分:13)

根据manual mysql_insert_id返回:

  

上一次查询为AUTO_INCREMENT列生成的ID   成功,如果上一个查询没有生成AUTO_INCREMENT,则 0   值,如果没有建立MySQL连接则为FALSE。

由于它没有给出false而没有给出正确的数字,因此它表示查询的表没有生成自动增量值。

我能想到两种可能性:

  1. 您的表格没有auto_increment字段
  2. 由于您没有提供mysql_insert_id()的链接,但是使用了mysql_query()的链接,因此它可能不是检索最后插入的id时查询的正确表。
  3. 解决方案:

    1. 确保它有一个auto_increment字段
    2. 提供链接以及$waarde = mysql_insert_id($this->db);

答案 1 :(得分:0)

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

答案 2 :(得分:0)

如果id确实设置为自动递增且仍然得到&#39; 0&#39;因为你的回复做了一个列和值计数我后来才发现这一点我注意到我的列数不符合数值计数。

答案 3 :(得分:0)

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

使用变量而不是多次调用函数:

$id = mysql_insert_id();