【发布时间】:2015-05-31 03:26:36
【问题描述】:
我处于需要使用 MYSQL 的LAST_INSERT_ID() 的情况,这显然只有在维护相同的连接时才有可能。但是当我考虑建立 PDO 连接的方式时,我突然想到我可能会遇到问题。
我有一个包含各种连接类型的数据库类。在这个类中,我根据我在 PDO 查询方法中调用的用户权限创建了不同的 PDO 连接方法,如下所示......
class dbFunctions {
private $userSelect = "userSelect";
private $passSelect = "XXXXX";
private $userDelete = "userDelete";
private $passDelete = "XXXXX";
protected function connectSelect() {
$dsn = $this->dsn();
$this->pdo = new PDO($dsn, $this->userSelect, $this->passSelect, $this->options);
return $this->pdo;
}
protected function connectDelete() {
$dsn = $this->dsn();
$this->pdo = new PDO($dsn, $this->userDelete, $this->passDelete, $this->options);
return $this->pdo;
}
public function selectCount($query, $values = []) {
$result = $this->connectSelect()->prepare($query);
$result->execute($values);
$exec = $result->fetch();
$count = (int)$exec['total'];
return $count;
}
}
我的问题是……
- 我是否最好为所有查询创建一个具有相同帐户/密码的全局连接对象?我这样做是出于安全目的,但我认为它可能有缺点。
- 即使这些是不同的 PDO 连接对象,PHP 是否能够确定它们是同一脚本中同一会话的一部分?在这种情况下,单独的方法就可以了。
- 如何让当前班级的 mysql 用户分开?
显然我可以自己测试,但我不确定当我让多个用户访问该网站时会产生什么结果。
【问题讨论】:
-
您绝对不应该为 Web 应用程序的每个选择查询创建一个 PDO 实例,还是我误解了?
-
所以我最好还是使用构造?
-
我已将此标记为重复,不是因为它是同一个问题,而是因为另一个问题中的答案应该回答这个问题。
-
@Phil - 很明显,在更改标题和问题后,这些问题没有任何共同点。答案与其他问题中的任何其他答案都不同。我很清楚我问错了问题。
-
@EternalHour 感谢更新。我已经删除了欺骗