使用"准备声明"后未生成"mysqli_insert_id"

Ham*_*ian -2 php mysql mysqli

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

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

<?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"; 
    };
?>
Run Code Online (Sandbox Code Playgroud)

Gla*_*vić 7

更改:

$singer_id=mysqli_insert_id($stmt);
Run Code Online (Sandbox Code Playgroud)

至:

$singer_id=mysqli_insert_id($connection);
Run Code Online (Sandbox Code Playgroud)


Roc*_*mat 7

你没有mysqli_insert_id正确使用.它应该是:

mysqli_insert_id($connection);
Run Code Online (Sandbox Code Playgroud)

或者更好的是:

$connection->insert_id
Run Code Online (Sandbox Code Playgroud)

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