【问题标题】:PHP Trouble Getting Data From Mysqli TablePHP 无法从 Mysqli 表中获取数据
【发布时间】:2013-10-14 17:38:07
【问题描述】:

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

php mysqli only returns one row

Fetching one row only with MySQLi

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

下面的代码只是展示了我是如何做的。我重申,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;
}

【问题讨论】:

  • 尝试使用while ($row = $stmt-&gt;fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_NEXT)) {:php.net/manual/en/pdostatement.fetch.php
  • 我想 $stmt 是查询的结果,对吧?但它给了我一个错误:致命错误:调用未定义的方法mysqli_result::fetch()
  • 是的,在你的情况下,你会使用 $this-&gt;fetch_object 或 $this-&gt;fetch_assoc : php.net/manual/en/mysqli-result.fetch-assoc.php
  • 它没有工作,所以我最好的选择是尝试 PDO api 来完成这个任务。
  • 也试过 $this->result->fetch_object 吗?祝你好运:)

标签: php mysql


【解决方案1】:

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

您应该访问像 $row-&gt;LastName 对象的字段这样的列,或者更改获取行的方式以使用 $this-&gt;result-&gt;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] 返回单个字符,即字符串中的第二个字符。

【讨论】:

  • 我确实在使用 $this->result->fectch_array(),但我仍然遇到同样的问题。
  • 看上面我添加了一些关于错误的更多信息。使用 fetch_array 我没有收到错误。但是我的表有 3 行,里面的所有数据都有相同的数据,即字段的名称。
  • 是的,我确实知道 $row[0][1],虽然我这样做是为了确保我不会发疯,但我需要的信息应该在 $row['FirstName'] ;我什至用 PDO api 更改了数据库连接,因为许多人说它更好。我仍然得到相同的结果-_-。我今天需要解决这个问题,但我无法解决这个数据库问题。我知道这是我的错,但我不知道在哪里
  • PHP ver.5.3.13 和 mySQL ver.5.5
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-23
  • 2015-03-05
  • 1970-01-01
  • 2014-09-19
  • 2017-02-28
  • 2014-04-08
  • 1970-01-01
相关资源
最近更新 更多