我一直在觀看有關 PHP 中與 MySQL 的基本連接的視頻。并試圖將錯誤內容從“致命錯誤:未捕獲的mysqli_sql_exception:php_network_getaddresses ....”隱藏到例如“錯誤2002”。我嘗試了一些方法,但它仍然顯示整個文本。我的代碼:我也嘗試使用 try/catch 塊,但它仍然顯示整個文本。我使用 vs 代碼和 PHP 8.1
<?php
require_once "connect.php";
$connection = @new mysqli($host,$db_user,$db_passw,$db_name);
if($connection->connect_errno != 0){
echo "Error ".$connection->connect_errno; // <- this place
//echo mysqli_report($connection->connect_errno);
//die($connection->connect_errno);
}else{
$login = $_POST['username'];
$passw = $_POST['password'];
$connection -> close();
}
?>
///////////////////////////////////////// /////////// ............
try {
$connection = @new mysqli($host,$db_user,$db_passw,$db_name);
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
...........
uj5u.com熱心網友回復:
它顯示了完整的錯誤訊息,因為您確實要求它:
echo 'Caught exception: ', $e->getMessage(), "\n";
如果要顯示數字錯誤代碼,只需這樣做:
echo 'Error ', $e->getCode(), "\n";
需要注意的是mysqli_report()似乎并不能阻止所有警告。感覺像是實施監督,但我沒有更多資訊。為此,@您已經使用的錯誤抑制運算子就足夠了。
另外,不要忘記display_errors在生產服務器中禁用該指令。
最后,Mysqli 自 PHP/8.1 起默認只拋出錯誤例外。在早期版本中,您需要明確設定它:
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/407239.html
標籤:
上一篇:在php中按位獲取陣列的所有元素
下一篇:api客戶端中的nonce是什么
