【发布时间】:2019-07-20 11:38:07
【问题描述】:
我的数据库连接有问题。
好吧,我在其中包含初始化 PDO 连接的 db.php 文件,然后检查是否设置了 $err 变量,如果没有设置,我创建一个新对象并尝试使用一种方法为我。但问题是——这个类中的方法根本看不到 $pdo 对象。
index.php
require_once 'db.php';
if (!isset($err)) {
$linkBuilder = new LinkBuilder();
$link = $linkBuilder->buildLink();
// ...
}
LinkBuilder.class.php
<?php
class LinkBuilder {
private $newLink;
private function linkInUse($link) {
try {
$stmt = $pdo->prepare('SELECT * FROM table WHERE link = :link');
$stmt->bindValue(':link', $link);
$stmt->execute();
if ($stmt->rowCount() > 0) return true;
} catch (PDOException $e) {
$err = Constants::DB_ERR;
}
}
public function buildLink() : string {
do {
$this->newLink = rand(100, 999) . chr(rand(65, 90)) . chr(rand(65, 90)) . chr(rand(65, 90));
} while ($this->linkInUse($this->newLink));
return $this->newLink;
}
}
另外,有什么地方可以改变以使这段代码更好吗?
感谢安万斯!
【问题讨论】: