簡體   English   中英

PHP mysqli_insert_id()期望參數1為mysqli

[英]php mysqli_insert_id() expects parameter 1 to be mysqli

這是我的代碼

$conn = mysql_connect($serverName, $username, $password)
        or die("Unable to connect to MySQL");
    $selected = mysql_select_db($databaseName,$conn)
        or die("Could not find the database");
    $result = mysql_query("INSERT INTO `user` () VALUES ()");
    return mysqli_insert_id($result)

這是例外

Warning: mysqli_insert_id() expects parameter 1 to be mysqli, boolean given in C:\xampp2\htdocs\XXX\controllers\User.php on line 24

第24行是return mysqli_insert_id($result)

您正在使用mysqli和mysqli。 不能同時使用兩者,必須選擇要使用的MySQL擴展。

如果是mysqli:

嘗試使用mysqli connectmysqli select db

如果是mysql:

使用mysql_insert_id (),而不是mysqli_insert_id()

我自己使用PDO,描述了mysql:

try 
{
    // Connect to your database
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);

    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // Put your insert statement
    $sql = "INSERT INTO `user` () VALUES ()";

    // use exec() because no results are returned
    $conn->exec($sql);

    $last_id = $conn->lastInsertId();

    echo "New record created successfully. Last inserted ID is: " . $last_id;
}
catch(PDOException $e)
{
    echo $sql . "<br />" . $e->getMessage();
}

更新: MySQL擴展名 :已被刪除,不再可用

您必須對所使用的MySQL擴展保持一致。 如果使用的是mysql擴展,則必須使用mysql_insert_id() ,而不是mysqli_insert_id()

如果重寫了所有代碼以使用mysqliPDO擴展會更好,因為不建議使用mysql擴展。 但這不是直接替代,語法有所不同。

您將mysqlmysqli混合使用,錯誤消息中提到的boolean值為FALSE 您的INSERT查詢失敗,因為它不提供任何要插入的值。 它在()上存在語法錯誤。

嘗試這個:

$result = mysql_query("INSERT INTO `user` (`name`) VALUES ('John Doe')");
return mysql_insert_id($result);

不要使用mysql_*函數。 自PHP 5.5起不推薦使用 mysql擴展, 以后將刪除。 使用mysqliPDO

混合使用mysql_和mysqli。 嘗試

mysql_insert_id();

代替。 如果失敗。

mysql_query("SELECT last_insert_id()");

應該為您工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM