Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
252 views
in Technique[技术] by (71.8m points)

php - mysql_insert_id() returns 0

I know there are a lot of topics with the same title. But mostly it's the query that's been inserted in the wrong place. But I think I placed it right. So the problem is, that I still get 0 even when the data is inserted in the db. Does someone knows an answer where I could be wrong?

here's my code:

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("
","
",$insert))."

".str_replace(" ","",str_replace("
","
",mysql_error()))));
    $waarde = mysql_insert_id();

Thanks a lot in advance, because I have been breaking my head for this one for almost already a whole day. (and probably it's something small and stupid)

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

According to the manual mysql_insert_id returns:

The ID generated for an AUTO_INCREMENT column by the previous query on success, 0 if the previous query does not generate an AUTO_INCREMENT value, or FALSE if no MySQL connection was established.

Since it does not give you false and not the correct number it indicates that the queried table didn't generate an auto-increment value.

There are two possibilities I can think of:

  1. Your table doesn't have an auto_increment field
  2. Since you doesn't provide the link to the mysql_insert_id() but using a link with mysql_query() it might not be the correct table that's queried when retrieving the last inserted id.

Solution:

  1. Make sure it has an auto_increment field
  2. Provide the link aswell: $waarde = mysql_insert_id($this->db);

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...