我有两门课——画廊和照片。Gallery 类选择一个数据库 id 列表并使用该 id 创建一张照片。在图库文件中,相关代码是
// fetch photos in Gallery class
private function fetchPhotos() {
$this->db = mydb::getConnection();
$statement = $this->db->prepare("SELECT DISTINCT pid FROM photogallery_link WHERE gid = :id");
$statement->execute(array(':id' => $this->id));
$pids = $statement->fetchAll();
for ($i = 0; $i < count($pids); $i++) {
$p = new Photo();
$p->fetchData($pids[$i]);
$this->photos[] = $p;
echo "\$p->fetchData($pids[$i])(from Gallery):<br />";
var_dump($p);
}
}
$pids 中的值似乎是正确的 $id 值。它们用于在 Photo 中调用以下代码:
// fetchData() function in Photo class
public function fetchData($id) {
$this->db = mydb::getConnection();
$statement = $this->db->prepare("SELECT * FROM photos WHERE photos_id = :id");
$statement->execute(array(':id' => $id));
$this->data = $statement->fetch();
// see what's going on
echo "$this->data (from Photo, select result): <br />\n";
var_dump ($this->data);
// fill the fields
$this->setId($this->data['id']);;
$this->setUrl($this->data['url']);
$this->setCaption($this->data['caption']);
$this->setDescription($this->data['description']);
$this->setFilename((pathinfo($this->url, PATHINFO_FILENAME)));
$this->setExt((pathinfo($this->url, PATHINFO_EXTENSION)));
$this->setPath(str_replace("." . $this->ext, "", $this->url));
}
如果我像这样直接创建一个照片对象,照片代码就可以工作:
$p = new Photo();
$p->fetchData(4);
$p->printThumbLink(3);
但是当我像上面的代码一样从 Gallery 类中尝试它时它不起作用。当我以这种方式尝试时,Photo 类中的 var_dump 显示 bool(false),表明 SELECT 语句不起作用。我不知道为什么 - 欢迎提出建议。