Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql\u insert\u id()返回0_Php_Mysql_Return_Mysql Insert Id - Fatal编程技术网

Php mysql\u insert\u id()返回0

Php mysql\u insert\u id()返回0,php,mysql,return,mysql-insert-id,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 = c

我知道有很多题目都是一样的。但主要是查询被插入了错误的位置。但我想我把它放对了。 所以问题是,即使在数据库中插入数据,我仍然得到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();
mysql\u查询('SET NAMES utf8');
$this->arr_kolomen=$arr_kolomen;
$this->arr_waardes=$arr_waardes;
$this->tabel=$tabel;
$aantal=count($this->arr_kolommen);
//$sql=“插入'tbl_photo_lijst_zoekcriteria'('PLZ_FOTO','PLZ_zoekcriteria','PLZ_CATEGORIE')值('$FOTO','$zoekje','afdeling');”;
$insert=“插入到“$this->tabel.”;
$kolommen=“(”;
$waardes=“值(”;
对于($i=0;$iarr_kolommen[$i]。”,”;
$waardes.=“'”“$this->arr_waardes[$i]。”,“;
}
$kolommen=substr($kolommen,0,-1)。”;
$waardes=substr($waardes,0,-1)。”;
$insert.=$kolommen.$waardes;
$result=mysql\u query($insert,$this->db)或die($this->sendErrorToMail(str\u replace(“,”,str\u replace(“\r\n”,“\n”,$insert))。“\n\n”.str\u replace(“,”,str\n,“,mysql\u error()));
$waarde=mysql_insert_id();
提前非常感谢,因为我已经为这件事伤了一整天的脑筋。(可能是一些小而愚蠢的事情)

根据mysql\u insert\u id返回:

上一次查询为自动增量列生成的ID 成功,0,如果上一个查询未生成自动增量 值,如果未建立MySQL连接,则为FALSE

因为它没有给您提供
false
,并且不是正确的数字,所以它表示查询的表没有生成自动增量值

我可以想到两种可能性:

  • 您的表没有自动增量字段
  • 由于您没有提供指向mysql\u insert\u id()的链接,而是使用带有mysql\u query()的链接,因此在检索上次插入的id时查询的表可能不正确
  • 解决方案:

  • 确保它有一个自动增量字段
  • 同时提供链接:
    $waarde=mysql\u insert\u id($this->db);

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

    如果id确实设置为自动递增,并且在您的响应执行列和值计数时仍然得到“0”,我只是在稍后才体验到这一点,我注意到我的列计数数不匹配值计数。

    Codeigniter在调用mysql\u insert\u id()时有一个奇怪的行为。函数在第一次调用后返回0。因此,调用两次将返回0

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

    $id = mysql_insert_id();
    

    请显示表方案。是否有自动增量表字段?您在查询中使用的是特定的链接标识符($this->db),但不是insert\u id。这可能会导致它查看整个其他连接。“如果未指定链接标识符,则假定mysql\u connect()打开的最后一个链接。”@Topener:是的,我有自动增量表字段。ID Int(11)Nee Geen auto_increment@PtPazuzu,我如何解决这个问题?(谢谢你们两位回答,ID是一个自动递增的字段。但是如果是第二个问题,我怎么解决呢?@user750079试着用
    mysql\u insert\u ID
    调用
    $this->db
    ,正如我在回答中提到的@Marcus抱歉,我读得太多了。但是它很有效。非常感谢你。我太愚蠢了,没有写$this->db;$insert$结果(换言之,是所有其他变量,但忘记了$this)。非常感谢。你说的$this->db是什么意思?我的代码是:mysql_query(“INSERT INTO mytable(myColumn)values('myValue');”);$id=mysql_INSERT_id();如果得到0,请给出资源名称。例如mysql_INSERT_id($connection)