opencart中的非法字符串偏移量“订单状态id”

opencart中的非法字符串偏移量“订单状态id”,opencart,opencart2.x,Opencart,Opencart2.x,当我想要获取视图中的循环数据时,我获取错误非法字符串偏移量“order\u status\u id” 代码如下: controller.php 如果设置为$\u POST[电子邮件]{ $email=$_POST[email]; } $this->load->model'order/myorder'; $data['data1']=$this->model\u order\u myorder->getOrder$email; view.php foreach$data1作为$row{ echo

当我想要获取视图中的循环数据时,我获取错误非法字符串偏移量“order\u status\u id”

代码如下:

controller.php

如果设置为$\u POST[电子邮件]{ $email=$_POST[email]; } $this->load->model'order/myorder'; $data['data1']=$this->model\u order\u myorder->getOrder$email; view.php

foreach$data1作为$row{ echo echo$row->order\u id; } model.php

类ModelOrderMyorder扩展了模型{ 公共函数getOrder$电子邮件{ $sql=从.DB_PREFIX.order、.DB_PREFIX.order_产品中选择*,其中.DB_PREFIX.order.email='$email'; $query=$this->db->query$sql; 返回$query; } }
仍然没有显示试图获取视图中非对象的属性。

首先,如果您想要迭代给定电子邮件的所有订单产品,我认为您需要更改getOrder方法以返回:

返回$query->rows; 然后在控制器中,您需要更改:

$data['data1']=$this->model\u order\u myorder->getOrder$email; 到

$this->data['data1']=$this->model\u order\u myorder->getOrder$email; 最后,在您的视图中,您将访问一个数组而不是一个对象,因此您应该丢失额外的回音,假设这是一个输入错误和更改:

echo echo$row->order\u id; 并得到如下索引:

echo$行['order_id'] 此外,除上述内容外,我建议您使用Opencart中的一些方法和代码约定:

访问$\u POST global时,可以使用经过消毒的 版本$this->request->post

您的查询未能反勾选订单表,这可能导致 在中的错误中,您没有设置前缀。你不会逃跑的 $email这是一个好主意,原因有很多。而且,它使 如果给表指定一个别名,事情就会变得简单。最后,加入 桌子。。。所以我可能会考虑重写这样的查询:

$sql=从“”中选择*。DB_前缀。命令'o左加入。DB_前缀。使用订单id订购产品op,其中o.email='$这->数据库->转义$email'; 老实说,我不确定您希望从该查询中得到什么结果,但请记住,如果给定订单中有多个产品,那么最终将返回多行


只是一些提示。。希望这对您有用。

错误表明$result中不存在订单状态id字段。你的循环很奇怪。因为您正在使用if isset$result。。。在循环之外,$result将包含集合中的最后一个顺序。我建议做一个var_dump$result;在该行之前,查看它是否包含您期望的数据;您知道如何在循环中将查询数据传递给视图吗?请尝试使用var_dump$data。如果该值也为NULL,则查询不会得到任何结果。请注意,您应该在模型中执行查询,而不是在控制器中!要将数据传递给视图,需要在控制器中使用$this->data['your_VARIABLE']='which';。然后在您的视图中,您可以使用$your_变量。一件事我在控制器中为一行编写了查询它的工作所有详细信息当我获取与它不匹配的第二行时我编写了模型我将检查