Php mysql\u insert\u id()返回0
我知道有很多题目都是一样的。但主要是查询被插入了错误的位置。但我想我把它放对了。 所以问题是,即使在数据库中插入数据,我仍然得到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
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
,并且不是正确的数字,所以它表示查询的表没有生成自动增量值
我可以想到两种可能性:
$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)