我在许多PHP文件中使用相同的代码块,有时在同一个PHP文件中使用(例如,当有一个if/else时)。我知道有更好的办法,但我不太清楚该怎么做。我想用一些东西来代替这个大块,但不确定什么合适。也许是require?
$hostname = 'localhost';
$database = 'dev_testing';
$username = 'root';
$password = 'XXXXXX';
$dbh = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);发布于 2016-07-26 14:48:34
@maalls和@TahaPaksu的回答是好的,但是@marcB的评论更好:通常您希望每次执行脚本时只连接数据库一次。我不想把您踢向依赖注入的方向,但是作为一个中间解决方案,我想建议这个类,它看起来很像一个单例,但实际上是追忆模式实现(其他模式示例也请参阅PHP设计模式 )。
总之:密码:
class Database() {
static private $connection = null;
public static function getConnection() {
if (static::$connection === null) {
$hostname = 'localhost';
$database = 'dev_testing';
$username = 'root';
$password = 'XXXXXX';
$dbh = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
static::$connection = $dbh;
}
return static::$connection;
}
}在您的脚本中,可以使用
$dbh = Database::getConnection();您可以随心所欲地调用该行,但只有在第一次调用该脚本时,它才会连接到数据库。随后的调用将只返回相同的连接。这将为您的数据库节省相当多的开销。
发布于 2016-07-26 14:38:43
创建一个单独的文件(用于前妻)。( "connection.php"),将代码放入其中,并在任何需要它的地方,在代码开始时包括以下内容:
require_once('connection.php');发布于 2016-07-26 14:40:16
您可以使用包含在php文件顶部的全局函数:
require_once("db.php");文件db.php
function db_connect(){
$hostname = 'localhost';
$database = 'dev_testing';
$username = 'root';
$password = 'XXXXXX';
$dbh = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $dbh;
}在你的档案里:
$dbh = db_connect();
...
// don't forget to close db before you open a new connection!
$dbh = null;https://stackoverflow.com/questions/38592814
复制相似问题