0

我是 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->

自动完成弹出窗口正确显示。

4

3 回答 3

1

我敢打赌你只需要给 Eclipse 一个类型提示。我不是 Eclipse 用户,但您通常使用 phpdoc 并执行以下操作:

...
$result = $stmt->fetchAll(PDO::FETCH_CLASS, "Articolo");
/** @var $record Articolo */
$record = $result[0];
于 2012-06-13T22:06:47.813 回答
0

假设您的查询成功并返回超过 1 行,$result包含许多对象。每个对象的类型都是Articolo.


要访问对象的方法,您必须执行以下操作:

$result = $stmt->fetchAll(PDO::FETCH_CLASS, "Articolo");

foreach($result as $object)
{
    // call a method on each object
    $object->someFunction();
} 


上面代码的解释:

  1. 获取数据,因此$result 应该包含一个 Articolo 对象数组。
  2. 循环遍历每个对象并调用 Articolo 类中存在的函数名称。

您的 IDE (Eclipse) 无法识别 Articolo 类中的函数的原因是您试图从$result变量中调用一个函数,该变量不是 Articolo 类的类型。


一些堆栈溢出的使用技巧:

  1. 始终使用右上角的搜索。许多人遇到了可能对您有所帮助的问题。
  2. 始终查看如何提问常见问题解答
  3. 反馈并在需要时随时提出更多问题!
于 2012-06-12T20:23:34.953 回答
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;
于 2012-06-12T22:53:57.690 回答