mysqli_sqlstate()函數(shù)返回最后一個錯誤的 SQLSTATE 錯誤代碼。
mysqli_sqlstate()函數(shù)返回一個包含 SQLSTATE 錯誤碼的字符串,表示上一次 SQL 操作的錯誤。 錯誤碼是由 5 個字符構成,'00000' 表示沒有發(fā)生錯誤。 錯誤碼是由 ANSI SQL 和 ODBC 定義的。
注意: 需要注意的是,并不是所有的 MySQL 錯誤都映射到 SQLSTATE 了, 未映射的錯誤消息使用 HY000(綜合錯誤)表示。
mysqli_sqlstate($con)
| 序號 | 參數(shù)及說明 |
|---|---|
| 1 | con(必需) 這是一個表示與MySQL Server的連接的對象。 |
PHP mysqli_sqlstate()函數(shù)返回一個字符串值,該字符串值表示在上一次MySQL操作期間發(fā)生的SQLSTATE錯誤。如果沒有錯誤,則此函數(shù)返回00000。
此函數(shù)最初是在PHP版本5中引入的,并且可以在所有更高版本中使用。
以下示例演示了mysqli_sqlstate()函數(shù)的用法(面向過程風格)-
<?php
//建立連接
$con = mysqli_connect("localhost", "root", "password", "mydb");
//查詢以檢索表的所有記錄
mysqli_query($con, "Select * from WrongTable");
//SQL State
$state = mysqli_sqlstate($con);
print("SQL狀態(tài)錯誤: ".$state);
//關閉連接
mysqli_close($con);
?>輸出結果
SQL狀態(tài)錯誤: 42S02
在面向?qū)ο箫L格中,此函數(shù)的語法為$con->sqlstate。以下是面向?qū)ο箫L格此函數(shù)的示例-
<?php
//建立連接
$con = new mysqli("localhost", "root", "password", "mydb");
//查詢以檢索employee表的所有記錄
$con -> query("Select FIRST_NAME, LAST_NAME, AGE form employee");
//SQL State
$state = $con->sqlstate;
print("SQL狀態(tài)錯誤: ".$state);
//關閉連接
$con -> close();
?>輸出結果
SQL狀態(tài)錯誤: 42000
以下是mysqli_sqlstate()函數(shù)的另一個示例-
<?php
//建立連接
$con = mysqli_connect("localhost", "root", "password", "mydb");
//查詢以選擇employee表的所有行
mysqli_query($con, "SELECT * FROM employee");
print("SQL State Error: ".mysqli_sqlstate($con)."\n");
//查詢以更新employee表的行
mysqli_query($con, "UPDATE employee set INCOME=INCOME+5000 where FIRST_NAME in (*)");
print("SQL State Error: ".mysqli_sqlstate($con)."\n");
//查詢以在employee表中插入行
mysqli_query($con, "INSERT INTO employee VALUES (Archana, 'Mohonthy', 30, 'M', 13000, 106)");
print("SQL State Error: ".mysqli_sqlstate($con)."\n");
//關閉連接
mysqli_close($con);
?>輸出結果
SQL State Error: 00000 SQL State Error: 42000 SQL State Error: 42S22
返回最后一個 MySQL 操作的 SQLSTATE 錯誤代碼:
<?php
$connection_mysql = mysqli_connect("localhost", "root", "password", "mydb");
if (mysqli_connect_errno($connection_mysql)){
echo "連接MySQL失敗: " . mysqli_connect_error();
}
//假設我們在數(shù)據(jù)庫mydb中已經(jīng)有一個名為Persons的表
$sql = "CREATE TABLE Persons (Firstname VARCHAR(30),Lastname VARCHAR(30),Age INT)";
if (!mysqli_query($connection_mysql,$sql)){
echo "SQLSTATE error: ". mysqli_sqlstate($connection_mysql);
}
mysqli_close($connection_mysql);
?>輸出結果
SQLSTATE error: 42S01