10

我知道有很多相同标题的主题。但主要是查询被插入了错误的位置。但我认为我把它放对了。所以问题是,即使将数据插入数据库,我仍然得到 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

4 回答 4

15

根据手册mysql_insert_id 返回:

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

由于它没有给您false并且不是正确的数字,因此表明查询的表没有生成自动增量值。

我能想到的有两种可能:

  1. 您的表没有 auto_increment 字段
  2. 由于您没有提供指向 mysql_insert_id() 的链接,而是使用带有 mysql_query() 的链接,因此在检索最后插入的 id 时,它可能不是查询的正确表。

解决方案:

  1. 确保它有一个 auto_increment 字段
  2. 同时提供链接:$waarde = mysql_insert_id($this->db);
于 2011-11-23T14:18:50.357 回答
0

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

于 2015-02-02T11:31:51.133 回答
0

如果 id 确实设置为自动递增并且仍然得到“0”,因为您的响应是列和值计数,我后来才遇到这种情况,我注意到我的一些列计数与值计数不匹配。

于 2015-07-22T07:53:47.287 回答
0

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

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

$id = mysql_insert_id();
于 2015-10-22T08:56:50.567 回答