在mysqli 概述页面上有一个好处列表,旨在引诱我进入 mysqli 领域。我什至不明白其中许多的含义,但是对我来说真的很有趣:增强的调试功能。
根据我的经验,准备好的语句(被认为是主要的并且主要使用 mysqli 功能)使调试动态 SQL 变得非常困难 - 您不能将准备好的查询中的常规查询复制到控制台中。
所以,我很想知道这些功能是什么以及如何使用它们。
是在调试 SQL 还是在其他方面?
如何使用它?
什么是实际用例?
在mysqli 概述页面上有一个好处列表,旨在引诱我进入 mysqli 领域。我什至不明白其中许多的含义,但是对我来说真的很有趣:增强的调试功能。
根据我的经验,准备好的语句(被认为是主要的并且主要使用 mysqli 功能)使调试动态 SQL 变得非常困难 - 您不能将准备好的查询中的常规查询复制到控制台中。
所以,我很想知道这些功能是什么以及如何使用它们。
是在调试 SQL 还是在其他方面?
如何使用它?
什么是实际用例?
关于准备好的语句,理论上,您会在发送参数之前知道您的 kwery 格式错误。因此,您不必怀疑是您的查询还是用户数据被窃听,您会立即知道。
关于一般查询,由于 mysqli 与 MySQL5 同步,而 mysql_old API 仅支持到 MYSQL 4,您将获得更好的错误消息,或者至少是最具描述性的。
此外,您可以使用 try\catch 语法来检测 mysql 错误,并且处理异常而不是or die....
or更容易if(mysql_error())
。
从您拥有的文档中:
<?php
define("MYSQL_CONN_ERROR", "Unable to connect to database.");
// Ensure reporting is setup correctly
mysqli_report(MYSQLI_REPORT_STRICT);
// Connect function for database access
function connect($usr,$pw,$db,$host) {
try {
$mysqli = new mysqli($host,$usr,$pw,$db);
$connected = true;
} catch (mysqli_sql_exception $e) {
throw $e;
}
}
try {
connect('username','password','database','host');
echo 'Connected to database';
} catch (Exception $e) {
echo $e->errorMessage();
}
mysqli_report(MYSQLI_REPORT_STRICT)
根据文档,关键功能是:
MYSQLI_REPORT_STRICT
Throw a mysqli_sql_exception for errors instead of warnings.
mysqli_debug
正如eis所说,还有一个功能/方法。