PHP语句应该返回多个对象,但只返回一个

时间:2012-02-28 22:16:39

标签: php mysql mysqli

对于我的生活,我无法弄清楚为什么我的PHP脚本中的以下语句只返回一个对象。它是一个与之通信的mysql服务器,到目前为止我写了这个:

公共函数getCustomerinfoByCompanyID($ itemID){

    $stmt = mysqli_prepare($this->connection, "SELECT * FROM $this->tablename where CompanyID=?");
    $this->throwExceptionOnError();

    mysqli_stmt_bind_param($stmt, 'i', $itemID);        
    $this->throwExceptionOnError();

    mysqli_stmt_execute($stmt);
    $this->throwExceptionOnError();

    mysqli_stmt_bind_result($stmt, $row->CustID, $row->CompanyID, $row->FirstName, $row->Surname, $row->CellNo, $row->Email);

    if(mysqli_stmt_fetch($stmt)) {
      return $row;
    } else {
      return null;
    }

据我所知,它应该返回所有具有变量CompanyID的客户。然而,它只是返回第一个客户,而这就是全部,没有别的。

有什么想法吗?

另外,我想做的一件事是连接FirstName和Surname,但我不确定我是否可以在PHP中执行此操作。我还在学习这个。

2 个答案:

答案 0 :(得分:3)

应该是:

while( mysqli_stmt_fetch($stmt)) {
   $rows[] = $row;
}

答案 1 :(得分:0)

你在第一次调用mysqli_stmt_fetch()后返回,所以当然只有一个对象。 创建一个数组,在while循环中运行mysqli_stmt_fetch()并将所有行添加到数组中,然后返回该数组。

通过示例查看比发布此处更快 http://ca3.php.net/manual/en/mysqli-stmt.bind-result.php