![](/img/trans.png)
[英]mysqli_insert_id() expects parameter 1 to be mysqli, null given in
[英]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 connect和mysqli 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()
。
如果重寫了所有代碼以使用mysqli
或PDO
擴展會更好,因為不建議使用mysql
擴展。 但這不是直接替代,語法有所不同。
您將mysql
與mysqli
混合使用,錯誤消息中提到的boolean
值為FALSE
。 您的INSERT
查詢失敗,因為它不提供任何要插入的值。 它在()
上存在語法錯誤。
嘗試這個:
$result = mysql_query("INSERT INTO `user` (`name`) VALUES ('John Doe')");
return mysql_insert_id($result);
不要使用mysql_*
函數。 自PHP 5.5起不推薦使用 mysql
擴展, 以后將刪除。 使用mysqli
或PDO
。
混合使用mysql_和mysqli。 嘗試
mysql_insert_id();
代替。 如果失敗。
mysql_query("SELECT last_insert_id()");
應該為您工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.