使用“准备声明”后未生成“mysqli_insert_id”

时间:2013-11-13 15:06:20

标签: php mysql mysqli

我在另一个表中插入数据后尝试生成singer id, 当我使用准备语句时,问题就出现了:

  

警告:mysqli_insert_id()期望参数1为mysqli,object>在/Applications/XAMPP/xamppfiles/htdocs/admin/singer.php中给出>第22行警告:mysqli :: prepare()[mysqli.prepare]:无法获取>在/Applications/XAMPP/xamppfiles/htdocs/admin/singer.php上的mysqli>第24行

<?php
include('../db_inc.php');    
$singer_name =$_POST['singer_name'];
$singer_gender=$_POST['singer_gender'];
$singer_des=$_POST['singer_description'];
$singer_genre=$_POST['genre_list'];

        if($stmt=$connection->prepare("INSERT INTO singers(singer_name,singer_gender,singer_description) VALUES (?,?,?)")){
            $stmt->bind_param('sss',$singer_name,$singer_gender,$singer_des);
            $result1=$stmt -> execute();
            $singer_id=mysqli_insert_id($stmt);
            $stmt->close();
            }

  if($stmt2=$connection->prepare("INSERT INTO genre_singer(f_singer_id,f_genre_id) VALUES (?,?)")){
      $stmt2->bind_param('fs',$singer_id,$singer_genre);
            $result2=$stmt2 -> execute();
            $stmt2->close();
            $connection->close();
      }
if($result1 & $result2){
    echo "insert successfully"; 
    };
?>

2 个答案:

答案 0 :(得分:7)

变化:

$singer_id=mysqli_insert_id($stmt);

为:

$singer_id=mysqli_insert_id($connection);

答案 1 :(得分:7)

您没有正确使用mysqli_insert_id。它应该是:

mysqli_insert_id($connection);

或者更好:

$connection->insert_id

请参阅文档:http://php.net/mysqli_insert_id