【发布时间】:2015-01-16 03:35:12
【问题描述】:
我正在尝试获取查询结果,以便可以将 mysql 中的数据用作我页面上的变量
在给定的代码中,我已将酒店值硬编码为 105,但我试图从其他页面获取值作为 get。
$ratedID =$_GET['ratedhotel'];
这里我的页面主体嵌入在 while 下。但页面总是空的。这就是我目前所拥有的。
$hotel=$database->query('SELECT * FROM rate WHERE HotelID=:hotel ');
$database->bind(':hotel', '105');
$hotel->setFetchMode(PDO::FETCH_ASSOC);
while($r = $hotel->fetch())
下面是我以前的。
//$query = $db->query("SELECT * from rate WHERE HotelId='$ratedhotelID'");
//while($hotel = mysql_fetch_row($query, MYSQL_ASSOC))
我有一些已定义的函数作为库使用。
<?php
class Database{
private $host=DB_HOST;
private $user=DB_USER;
private $pass=DB_PASS;
private $dbname=DB_NAME;
private $stmt;
private $dbh;
private $error;
public function __construct()
{
// Set DSN
$dsn = 'mysql:host=' . $this->host . ';dbname=' . $this->dbname;
// Set options
$options = array(
PDO::ATTR_PERSISTENT => true,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
);
// Create a new PDO instanace
$this->dbh = new PDO($dsn, $this->user, $this->pass, $options);
}
public function query($query){
$this->stmt = $this->dbh->prepare($query);
}
public function bind($param, $value, $type = null){
if (is_null($type)) {
switch (true) {
case is_int($value):
$type = PDO::PARAM_INT;
break;
case is_bool($value):
$type = PDO::PARAM_BOOL;
break;
case is_null($value):
$type = PDO::PARAM_NULL;
break;
default:
$type = PDO::PARAM_STR;
}
}
$this->stmt->bindValue($param, $value, $type);
}
public function execute(){
return $this->stmt->execute();
}
public function resultset(){
$this->execute();
return $this->stmt->fetchAll(PDO::FETCH_ASSOC);
}
public function single(){
$this->execute();
return $this->stmt->fetch(PDO::FETCH_ASSOC);
}
public function rowCount(){
return $this->stmt->rowCount();
}
}
我不确定并且是 PDO 的新手。非常感谢任何帮助。
杰
更新
我对php进行了修改,代码如下:
$database= new Database();
$database->query('SELECT * from rated where HotelID =:hotel');
$database->bind(':hotel', $HotelID);
//echo $database->resultset();
$rows=array();
$rows= $database->resultset(PDO::FETCH_ASSOC);
//while($rows= $database->resultset());
//while($hotel = $q->fetchAll(PDO::FETCH_ASSOC));
{
echo "<pre>";
print_r($rows);
echo "</pre>";
echo "<div>'.$rows[LowRate].'<div>";
};
?>
因此,基于以上内容,我可以在我的页面上看到数组,因此查询有效。 但我想在我的 html 中使用变量。
<p class="price-display-large page-price-text">'.$rows[LowRate].''.rows[PropertyCurrency].'</p>
但这不起作用。
【问题讨论】:
-
PDO 包装器,尤其是那些将像
PDOStatement这样的瞬态对象存储为属性的包装器比它们的价值更麻烦。除非您在 PDO 之上添加重要功能,否则我会避免编写一个 -
哦,另外,您的主要问题是
Database::query不返回任何内容,因此您尝试在空对象上执行setFetchMode。启用错误报告会向您指出这一点