2015-03-08 108 views
-1

有谁知道为什么我得到的返回值为0,此代码:PHP MySQL的lastInsertID

 /* check connection */ 
     if (mysqli_connect_errno()) { 
      error_log("Connect failed: " . mysqli_connect_error()); 
      echo '{"success":0,"error_message":"' . mysqli_connect_error() . '"}'; 
     } else { 
      $stmt = $mysqli->prepare("INSERT INTO teams (name, token) VALUES (?, ?)"); 
      $stmt->bind_param('ss', $team, $token); 


      /* execute prepared statement */ 
      $stmt->execute(); 

      if ($stmt->error) {error_log("Error: " . $stmt->error); } 

      $success = $stmt->affected_rows; 

      //Get the last insert ID of the insert Team 
      $lastInsertID = $stmt->insert_id; 




       //Insert into the Mapping Table 
       $stmt = $mysqli->prepare("INSERT INTO usersTeamsMap (users_idUser, teams_idTeam) VALUES (?, ?)"); 
       $stmt->bind_param('ii', $userID , $lastInsertID); 


       /* execute prepared statement */ 
       $stmt->execute(); 

       //Get the last insert ID of the insert Team 
       $lastInsertID = $stmt->insert_id; 
       echo "ID: " . $lastInsertID; 

最后的回声总是返回0。第一个 “$ lastInsertID = $ stmt-> INSERT_ID;”第一次插入查询的工作正常。

在此先感谢。

编辑:

感谢您的所有答案。现在我知道为什么服务没有工作。我的映射表没有AutoIncrement字段。

+0

什么是第一个也是最后一个?是宇跑循环?代码的那一部分在哪里 – 2015-03-08 18:47:37

+0

在第一个之后并且在你准备第二个之前尝试'$ stmt-> close();'。 – 2015-03-08 18:52:13

回答

0

insert_id是mysqli对象的属性,而不是语句!它是连接特定的。

所以它应该是$mysqli->insert_id