2011-11-23 171 views
6

我知道有很多標題相同的主題。但主要是它被插入錯誤的地方的查詢。但我認爲我把它放在了正確的位置。 所以問題是,即使數據插入到數據庫中,我仍然得到0。 有人知道答案,我可能是錯的嗎?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(); 

非常感謝提前,因爲我已經打破我的頭這一個幾乎已經一整天。 (也許它的東西,小的和愚蠢的)

+3

請出示表方案。你有一個自動增量表字段嗎? –

+0

您在查詢中使用特定的鏈接標識符($ this-> db),但不適用於insert_id。這可能會導致它看起來與整個其他連接。 「如果未指定鏈接標識符,則假定由mysql_connect()打開的最後一個鏈接。」 – PtPazuzu

+0

@ Topener:是的,我有自動增量表字段。\t ID \t Int(11)\t Nee \t Geen \t AUTO_INCREMENT @PtPazuzu我該如何解決問題? (謝謝你的回答:) – user750079

回答

12

按照manual mysql_insert_id回報:

一個AUTO_INCREMENT列在前面的查詢上 成功生成的ID,0如果先前的查詢不產生AUTO_INCREMENT 值,如果沒有建立MySQL連接,則返回FALSE。

由於它不給你false而不是正確的數字,它表明查詢表沒有生成自動增量值。

有兩種可能性,我能想到的:

  1. 你的表沒有一個AUTO_INCREMENT場
  2. 既然你不提供鏈接到mysql_insert_id(),但使用具有的mysql_query鏈接()它可能不是在檢索最後插入的id時查詢的正確表格。

解決方案:

  1. 確保它有一個AUTO_INCREMENT場
  2. 提供的鏈接藏漢:$waarde = mysql_insert_id($this->db);
+0

ID是一個auto_increment字段,但是如何解決它,如果是第二個問題呢? – user750079

+0

@ user750079嘗試用'$ this-> db'調用'mysql_insert_id',正如我在回答 – Marcus

+0

@ Marcus對不起,我重讀了它,但它工作,非常感謝你,我很愚蠢地寫而不是$ this-> db; $ insert,$ result(換句話說,所有其他變量,但忘記了$ 。這一點)非常感謝您 – user750079

0

這可能是你的INSERT查詢不成功 - 例如,也許您是否試圖在數據必須唯一的列上插入重複數據?

0

如果ID確實設置爲自動增量,並且仍然得到'0'作爲您的響應做了一個列和值計數我只有後來經歷了這一點,我注意到我的列數不符合值計數。

0

Codeigniter在調用mysql_insert_id()時有一個奇怪的行爲。該函數在第一次調用後返回0。所以調用它兩次將返回0

使用一個變量,而不是調用函數多次的:

$id = mysql_insert_id();