opencart 中的非法字符串偏移 'order_status_id'
Illegal string offset 'order_status_id' in opencart
当我想在视图中获取循环数据时出现错误 Illegal string offset 'order_status_id'
代码如下:
controller.php
if (isset($_POST["email"])) {
$email = $_POST["email"];
}
$this->load->model('order/myorder');
$data['data1'] = $this->model_order_myorder->getOrder($email) ;
view.php
foreach ($data1 as $row) {
echo echo $row->order_id;
}
model.php
class ModelOrderMyorder extends Model {
public function getOrder($email) {
$sql = "SELECT * FROM ".DB_PREFIX."order, ".DB_PREFIX."order_product WHERE ".DB_PREFIX."order.email = '$email'";
$query = $this->db->query($sql);
return $query ;
}
}
仍然没有显示正在尝试让 属性 的非对象可见。
首先,如果您想遍历给定电子邮件的所有订单产品(我想这就是您想要的),您应该将 getOrder()
方法更改为 return:
return $query->rows;
然后在controller中你需要改变:
$data['data1'] = $this->model_order_myorder->getOrder($email) ;
到
$this->data['data1'] = $this->model_order_myorder->getOrder($email);
最后,在您看来,您将访问一个 array 而不是 object 所以您应该失去额外的 echo
(假设这是一个错字)并更改:
echo echo $row->order_id;
并获取索引为:
echo $row['order_id']
此外,除了上述之外,我还建议您使用 Opencart 中的一些方法和代码约定:
访问 $_POST
全局时,您可以使用经过消毒的
版本 $this->request->post
您的查询未能反引号 order table 这可能会导致
在你没有设置前缀的错误中。而你并没有逃避
$email
出于多种原因,这是一个好主意。同时,它使
如果您给 table 起个别名,事情就容易多了。最后,加入
tables...所以我可能会考虑像这样重写该查询:
$sql = "SELECT * FROM `" . DB_PREFIX . "order` o LEFT JOIN " . DB_PREFIX . "order_product op USING (order_id) WHERE o.email = '" . $this->db->escape($email) . "'";
老实说,我不确定您希望从该查询中得到什么结果,但请记住,如果给定订单有多种产品,您最终会得到多行 returned .
一些提示..希望这对你有用。
当我想在视图中获取循环数据时出现错误 Illegal string offset 'order_status_id'
代码如下:
controller.php
if (isset($_POST["email"])) {
$email = $_POST["email"];
}
$this->load->model('order/myorder');
$data['data1'] = $this->model_order_myorder->getOrder($email) ;
view.php
foreach ($data1 as $row) {
echo echo $row->order_id;
}
model.php
class ModelOrderMyorder extends Model {
public function getOrder($email) {
$sql = "SELECT * FROM ".DB_PREFIX."order, ".DB_PREFIX."order_product WHERE ".DB_PREFIX."order.email = '$email'";
$query = $this->db->query($sql);
return $query ;
}
}
仍然没有显示正在尝试让 属性 的非对象可见。
首先,如果您想遍历给定电子邮件的所有订单产品(我想这就是您想要的),您应该将 getOrder()
方法更改为 return:
return $query->rows;
然后在controller中你需要改变:
$data['data1'] = $this->model_order_myorder->getOrder($email) ;
到
$this->data['data1'] = $this->model_order_myorder->getOrder($email);
最后,在您看来,您将访问一个 array 而不是 object 所以您应该失去额外的 echo
(假设这是一个错字)并更改:
echo echo $row->order_id;
并获取索引为:
echo $row['order_id']
此外,除了上述之外,我还建议您使用 Opencart 中的一些方法和代码约定:
访问
$_POST
全局时,您可以使用经过消毒的 版本$this->request->post
您的查询未能反引号 order table 这可能会导致 在你没有设置前缀的错误中。而你并没有逃避
$email
出于多种原因,这是一个好主意。同时,它使 如果您给 table 起个别名,事情就容易多了。最后,加入 tables...所以我可能会考虑像这样重写该查询:
$sql = "SELECT * FROM `" . DB_PREFIX . "order` o LEFT JOIN " . DB_PREFIX . "order_product op USING (order_id) WHERE o.email = '" . $this->db->escape($email) . "'";
老实说,我不确定您希望从该查询中得到什么结果,但请记住,如果给定订单有多种产品,您最终会得到多行 returned .
一些提示..希望这对你有用。