所以我开始本教程作为 PHP PDO 的介绍。到目前为止,我只使用基本mysql_*
类型查询。
我注意到,在整个教程中,connect -> do action -> disconnect
模式是重复的,只有do action
部分发生了变化。
在现实世界的环境中,通过创建一个可以传递查询的函数来消除重复是一个好主意吗?
例如:
处理查询的函数:
<?php
function databaseDo($action) {
$db_hostname = 'localhost';
$db_username = 'root';
$db_password = 'root';
try {
// Establish DB connection
$dbh = new PDO("mysql:host=$hostname;dbname=mysql",
$db_username, $db_password);
echo 'Connected to database';
// Do something
$action($dbh); // <- here goes whatever action we wish to perform
// Close connection
$dbh = null;
}
catch(PDOException $e) {
echo $e->getMessage();
}
?>
然后,假设我想执行 PDO 教程的第一个示例中的操作,我会这样设置:
<?php
// Define action
$insert = function($dbh) {
$query = "INSERT INTO animals(animal_type, animal_name)
VALUES ('kiwi', 'troy')";
$exec = $dbh->exec($query);
echo $exec;
};
// Perform action
databaseDo($insert);
?>
$dbh 的范围
我使用 $dbh 作为参数。这是将变量传递给这样的函数而不使其成为全局变量的正确方法吗?