2016-12-29 82 views
0

我有一个PHP类我在哪里initilizing在构造从数据库retieved数组:如何通过PHP中获取查询循环使用的MySQL

class TableClass{ 
    public function __construct($con, $id){ 
     $this->con = $con;    
     $query = mysqli_query($this->con, "SELECT * FROM table1 WHERE id='$id'"); 
     $this->table_result= mysqli_fetch_array($query); 
    } 
} 

我有,我想用数组不同的功能而不必再次获取。我只需要循环查看结果并进行一些计算。 我试过的语法如下:

public function getNumberOfComments(){ 
    for ($i = 0; $i < count($this->table_result); $i++) { 
      $comment= $this->table_result[$i]['comment'];      
    } 
} 

我得到一个错误:Illegal string offset "comment"

什么是正确的语法?

+2

您只从结果集中提取一行,那么为什么使用'for'循环呢?简单的'$ comment = $ this-> table_result ['comment'];'会做得很好。 –

+0

首先尝试'print_r'结果'$ this-> table_result'来查看究竟究竟是什么被提取 –

回答

3

您是从结果集中读取一行:

$this->table_result= mysqli_fetch_array($query); 

假设id是主键,你会在你的结果集0或1行,所以如果行被发现,你可以直接访问字段,而使用循环:

$comment= $this->table_result['comment']; 
+1

我们都发布了几乎同一时间。 ;-) –

+0

我很好奇;因为它们是用'$ this-> con = $ con;'构造的,并将2个参数传递给构造函数,所以'$ id'是否也包含一个属性? –

+0

@ Fred-ii-可能,取决于班级的其他人。从我所看到的甚至'$ this-> con'都是未使用/不需要的,但也许在其他方法中...... – jeroen

0

非法串偏移“注释”是告诉你的$this->table_result[$i]值不是一个数组,因此不包含元素命名为comment

问题可能是由构造函数中的代码无法正常工作引起的;你在那里没有任何错误检查,所以如果失败了,它不会告诉你。

在构造函数中添加一些错误检查,找出它失败的原因并进行修复。