我是PHP和PDO的新手。我正在使用Eclipse PDT。
$stmt = $pdo->prepare("SELECT * from articolo");
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_CLASS, "Articolo");
之后我希望能够输入:
$result[0]->
从那里按ctrl + space Eclipse应该弹出自动完成功能,包含该类Articolo的所有成员和函数。
但没有任何反应,好像IDE不知道$ result的类。 难道我做错了什么? 也许需要向(Articolo)投出$ result?
做的:
$var = new Articolo()
$var->
自动填充弹出窗口正确显示。
答案 0 :(得分:1)
我敢打赌,你只需要给Eclipse一个类型提示。我不是Eclipse用户,但您通常使用phpdoc并执行以下操作:
...
$result = $stmt->fetchAll(PDO::FETCH_CLASS, "Articolo");
/** @var $record Articolo */
$record = $result[0];
答案 1 :(得分:0)
假设您的查询成功&返回超过1行,$result
包含许多对象。每个对象都是Articolo
类型。
要访问对象的方法,您必须执行以下操作:
$result = $stmt->fetchAll(PDO::FETCH_CLASS, "Articolo");
foreach($result as $object)
{
// call a method on each object
$object->someFunction();
}
foreach($result as $object)
{
// call a method on each object
$object->someFunction();
}
上述代码的说明:
应包含Articolo对象数组。您的IDE(Eclipse)无法识别Articolo类中的函数的原因是您尝试从$result
变量调用函数,该变量不属于Articolo类。
一些堆栈溢出使用提示:
答案 2 :(得分:0)
我找到了解决方案:
$articolo = new Articolo();
$stmt = $pdo->prepare("SELECT * from articolo");
$stmt->setFetchMode(PDO::FETCH_INTO, $articolo);
$stmt->execute();
while ($stmt->fetch()) {
$articoli[] = clone $articolo;
}
return $articoli;