创建连接脚本:我应该使用 unset 吗?
Create a connection script: should I use unset?
我正在从这篇很棒的文章中学习,特别是关于如何在 PHP 中创建连接脚本:
https://phpdelusions.net/mysqli/mysqli_connect
但是,这篇文章在 2 个地方对 unset
的定义不同。我很困惑。
例如,文章开头写着:
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
try {
$db = new mysqli($host, $user, $pass, $dbname, $port);
$db->set_charset($charset);
} catch (\mysqli_sql_exception $e) {
throw new \mysqli_sql_exception($e->getMessage(), $e->getCode());
}
unset($host, $dbname, $user, $pass, $charset); // we don't need them anymore
最后:
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
try {
require __DIR__.'/db_credentials.php';
$db = new mysqli($host, $user, $pass, $db, $port);
$db->set_charset($charset);
} catch (\mysqli_sql_exception $e) {
throw new \mysqli_sql_exception($e->getMessage(), $e->getCode());
} finally {
unset($host, $db, $user, $pass, $charset);
}
那么,是哪一个?我应该使用 unset
吗?如果是,如何...使用或不使用关键字 finally
?
顺便说一句,很棒的文章。
在这两种情况下 unset
行为相同 - 释放数据库连接的参数。
有什么不同?仅语法。
finally
是一种确保即使发生错误,finally
块内的代码也会 运行.
的方法
只有try
和catch
的代码会以同样的方式运行。捕获后 unset
将 运行.
两者都正确。
您可以阅读有关 finally
here.
的细微差异
我正在从这篇很棒的文章中学习,特别是关于如何在 PHP 中创建连接脚本: https://phpdelusions.net/mysqli/mysqli_connect
但是,这篇文章在 2 个地方对 unset
的定义不同。我很困惑。
例如,文章开头写着:
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
try {
$db = new mysqli($host, $user, $pass, $dbname, $port);
$db->set_charset($charset);
} catch (\mysqli_sql_exception $e) {
throw new \mysqli_sql_exception($e->getMessage(), $e->getCode());
}
unset($host, $dbname, $user, $pass, $charset); // we don't need them anymore
最后:
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
try {
require __DIR__.'/db_credentials.php';
$db = new mysqli($host, $user, $pass, $db, $port);
$db->set_charset($charset);
} catch (\mysqli_sql_exception $e) {
throw new \mysqli_sql_exception($e->getMessage(), $e->getCode());
} finally {
unset($host, $db, $user, $pass, $charset);
}
那么,是哪一个?我应该使用 unset
吗?如果是,如何...使用或不使用关键字 finally
?
顺便说一句,很棒的文章。
在这两种情况下 unset
行为相同 - 释放数据库连接的参数。
有什么不同?仅语法。
finally
是一种确保即使发生错误,finally
块内的代码也会 运行.
只有try
和catch
的代码会以同样的方式运行。捕获后 unset
将 运行.
两者都正确。
您可以阅读有关 finally
here.