为什么我会得到错误的Fatal error: Call to a member function fetchAll()。我已经看过了与相同错误有关的其他问题,但是我的代码似乎很好,它似乎与$this->$db和var_dump返回object(PDO)#2 (0) { }有关。
index.php
<?php
include('assets/misc/functions.php');
$cars = new Cars(connection());
$listAll = $cars->listCars();
var_dump($listCars);
?>config.php
<?php
function connection()
{
try
{
$host = 'localhost';
$dbuser = 'jzmcond_pdo1';
$dbpass = '';
$dbname = 'jzmcond_pdo1';
$dbConnection = new PDO("mysql:host=" . $host . ";dbname=" . $dbname.";", $dbuser, $dbpass);
return $dbConnection;
} catch (PDOException $error)
{
echo $error->getMessage();
return FALSE;
}
}
?>函数:
<?php
include('config.php');
class Cars{
protected $db;
public function __construct(PDO $db){
$this->db = $db;
}
public function listCars()
{
$query = $this->db->prepare("SELECT `id` `rego` `engineSize` `type` `colour` `year` `additionalFeatures` FROM `cars`")->execute();
//return $query->fetchAll();
var_dump($this->db); exit();
}
}
?>发布于 2014-09-06 03:34:17
您的查询语法是错误的,没有加逗号
变化
SELECT `id` `rego` `engineSize` `type` `colour` `year` `additionalFeatures` FROM `cars至
SELECT `id`, `rego`, `engineSize`, `type`, `colour`, `year`, `additionalFeatures` FROM `cars`在这种情况下,您甚至不需要做准备,尝试如下:
public function listCars()
{
$query = "SELECT `id`, `rego`, `engineSize`, `type`, `colour`, `year`, `additionalFeatures` FROM `cars`";
$stmt = $this->db->query($query);
if (!$stmt) {
echo "\nPDO::errorInfo():\n";
print_r($this->db->errorInfo());
exit();
}
$rows = $stmt->fetchAll();
return $rows;
}发布于 2014-09-06 03:22:45
看看这个有用不管用。我从来没有像你那样做过,但如果我要尝试,这就是我要尝试的.
<?php
function connection()
{
try
{
$host = 'localhost';
$dbuser = 'jzmcond_pdo1';
$dbpass = '';
$dbname = 'jzmcond_pdo1';
$dbConnection = new PDO("mysql:host=$host;dbname=$dbname;", $dbuser, $dbpass);
return $dbConnection;
} catch (PDOException $error)
{
echo $error->getMessage();
return FALSE;
}
}类
class Cars{
protected $db;
public function __construct($db){
$this->db = $db;
}
public function listCars()
{
// as @Meda suggested, commas in query, I never noticed that
$query = $this->db->prepare("SELECT `id`,`rego`,`engineSize`,`type`,`colour`,`year`,`additionalFeatures` FROM `cars`");
$query->execute();
if($query->rowCount() > 0) {
while($result = $query->fetch(PDO::FETCH_ASSOC)) {
$_array[] = $result;
}
}
return ($query->rowCount() > 0)? $_array:0;
// return ($query->rowCount() > 0)? $query->fetchAll():0;
}
}使用
include('config.php');
$db = connection();
if($db !== false) {
$CarDude = new Cars($db);
$_list = $CarDude->listCars();
print_r($_list);
} ?>https://stackoverflow.com/questions/25696419
复制相似问题