PHP无法从Mysqli表中获取数据

时间:2013-10-07 23:58:50

标签: php mysql

在任何人评判之前...我已经检查过其他有类似问题的帖子,但仍无法解决我的问题。

php mysqli only returns one row

Fetching one row only with MySQLi

我还检查并阅读了PHP手册,没有运气使用不同的方法来提取数据。 我的意思是我提取一个表,表甚至有正确的行数。但是,所有行都有相同的信息:第一行,即表示标题的行,即:FirstName,Phone,Address等。

下面的代码显示了我正在做的事情。我重申,mysqli连接确实提取了一个包含正确行数的数据表。但我没有得到正确的信息。

public function queryexec()
{   
  if(isset($this->query))
  {
    //execute prepared query and store in result variable.
    $this->result = $this->connection->query($this->query);
    echo 'Table Row Count: '. $this->result->num_rows;

        echo '<br/>';

        //fetch_array gives me table but only headers but correct amount of rows.
        //Fetch_object doesnt work throws me error: 
        //Fatal error: Cannot use object of type stdClass as array   
        while($row = $this->result->fetch_array()){

             printf ("%s (%s)\n", $row[0], $row[2][1]);
            //echo 'Table Data: '. $newdata["LastName"];
           //echo '<br/>';
        }

        return true;
  }
  return false;
}

1 个答案:

答案 0 :(得分:2)

你正在调用fetch_object()但是你正在访问行元素,就好像它是一个序数数组。

您应该像对象$row->LastName的字段一样访问列,或者更改获取行以使用$this->result->fetch_array()的方式。


我刚刚使用PHP 5.3.26和MySQL 5.6.13测试了您的代码。我没有错误,我获得了所有三行的不同数据:

mysql> show create table test.foo\G

CREATE TABLE `foo` (
  `id` int(11) NOT NULL,
  `z` int(11) DEFAULT NULL,
  `LastName` text,
  `t` text,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

mysql> insert into foo (id, lastname) values 
(1, 'Granger'), (2, 'Potter'), (3, 'Weasley');

$ php 19236839.php
Table Row Count: 3<br/>
1 (r)
2 (o)
3 (e)

请注意,$row[2][1]返回单个字符,即字符串中的第二个字符。