我正在使用PHP和OOP从数据库中选择行(MySQL)。
当我执行查询时,它返回一个空行。
这是我正在使用的classe:
<?php
class EmploiManager
{
private $_db;
public function __construct($db)
{
$this->setDb($db);
}
public function category($category)
{
$q = $this->_db->prepare('SELECT * FROM DemandeEmploi WHERE category = :category');
$q->execute(array('category' =>$category));
$donnees = $q->fetch(PDO::FETCH_ASSOC);
return new Emploi($donnees);
}
public function setDb(PDO $db)
{
$this->_db = $db;
}
}
$type = $_GET['category'];
$manager = new EmploiManager($db);
$row = $manager->category($type);
foreach ($row as $demandeE)
{
?>
<div class="list"><h4><a href="?id=<? echo $demandeE->id();?>&category=demandemploi"><? echo $demandeE->title();?></a></h4> </div>
<?php
}
?>
任何人都可以告诉我这段代码有什么问题吗? 谢谢!
答案 0 :(得分:1)
这是我的坏事,我没有使用循环来选择所有行。
我更正了代码,现在工作正常,这就是它的样子:
public function category($category)
{
$datas = array();
$q = $this->_db->prepare('SELECT * FROM DemandeEmploi WHERE category = :category');
$q->execute(array('category' =>$category));
while ($donnees = $q->fetch(PDO::FETCH_ASSOC))
{
$datas[] = new Emploi($donnees);
}
return $datas;
}
答案 1 :(得分:0)
$q->fetch()
只返回一行结果。如果您想要所有结果,则必须使用$q->fetchAll()
。
由于您指定了PDO::FETCH_ASSOC
,因此$row
的元素将是关联数组,而不是对象;是不是你得到错误,说你试图在非对象上调用方法?因此$demandeE->id()
应为$demandeE['id']
,而$demandeE->title()
应为$demandeE['title']
。
或者,您可以指定PDO::FETCH_OBJ
。然后,值将是属性,而不是方法,因此它应该是$demandeE->id
和$demandeE->title
(没有括号)。