php pdoconnection,如何正确设置PDO连接

我不时看到有关连接数据库的问题。

大多数答案不是我做的方式,否则我可能只是无法正确获得答案。无论如何; 我从未考虑过,因为我的工作方式对我有效。

但是这里有个疯狂的想法;也许我做错了所有,如果是这样的话;我真的很想知道如何使用PHP和PDO正确连接到MySQL数据库并使其易于访问。

这是我的做法:

首先,这是我的文件结构 (向下精简) :

public_html/

* index.php

* initialize/

-- load.initialize.php

-- configure.php

-- sessions.php

index.php

在最顶部,我有require('initialize/load.initialize.php');。

load.initialize.php

# site configurations

require('configure.php');

# connect to database

require('root/somewhere/connect.php'); // this file is placed outside of public_html for better security.

# include classes

foreach (glob('assets/classes/*.class.php') as $class_filename){

include($class_filename);

}

# include functions

foreach (glob('assets/functions/*.func.php') as $func_filename){

include($func_filename);

}

# handle sessions

require('sessions.php');

我知道有一种更好或更正确的方法来包含类,但是不记得它是什么了。 还没来得及研究它,但是我认为这是与之有关的autoload。像那样的东西

configure.php

在这里,我基本上只是重写一些 php.ini -properties并对该站点进行其他一些全局配置

connect.php

我已经将连接放到一个类上,以便其他类可以 扩展 此类…

class connect_pdo

{

protected $dbh;

public function __construct()

{

try {

$db_host = ' '; // hostname

$db_name = ' '; // databasename

$db_user = ' '; // username

$user_pw = ' '; // password

$con = new PDO('mysql:host='.$db_host.'; dbname='.$db_name, $db_user, $user_pw);

$con->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

$con->exec("SET CHARACTER SET utf8"); // return all sql requests as UTF-8

}

catch (PDOException $err) {

echo "harmless error message if the connection fails";

$err->getMessage() . "
";

file_put_contents('PDOErrors.txt',$err, FILE_APPEND); // write some details to an error-log outside public_html

die(); // terminate connection

}

}

public function dbh()

{

return $this->dbh;

}

}

# put database handler into a var for easier access

$con = new connect_pdo();

$con = $con->dbh();

//

我确实在这里相信,自从我最近开始学习OOP并使用PDO代替mysql以来,还有很大的改进空间。

因此,我只是遵循了一些初学者教程,并尝试了不同的方法…

sessions.php

除了处理常规会话外,我还将一些类初始化为如下所示的会话:

if (!isset($_SESSION['sqlQuery'])){

session_start();

$_SESSION['sqlQuery'] = new sqlQuery();

}

这样,该课程可在各处使用。这可能不是一个好习惯(?)…

总之,这就是我可以从任何地方做的事情:

echo $_SESSION['sqlQuery']->getAreaName('county',9); // outputs: Aust-Agder (the county name with that id in the database)

在my sqlQuery- class (即extendsmy connect_pdo- class)内部

,有一个名为的公共函数getAreaName来处理对数据库的请求。

我觉得很整洁。

就像魅力一样工作,

所以基本上这就是我的做法。

此外,每当我需要从不在类内的数据库中获取某些内容时,我都会做类似的事情:

$id = 123;

$sql = 'SELECT whatever FROM MyTable WHERE id = :id';

$qry = $con->prepare($sql);

$qry -> bindParam(':id', $id, PDO::PARAM_INT);

$qry -> execute();

$get = $qry->fetch(PDO::FETCH_ASSOC);

由于我将连接放入 connect_pdo.php中 的变量中,因此我只用引用它就可以了。有用。我得到了预期的结果…

但是不管怎样;如果你们能告诉我我是否要离开这里,我将不胜感激。我应该做的是,我应该或应该改变以改进的领域等。

我渴望学习…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值