Prestashop 1.6.1.14 - 数据库查询在Execute上返回1

时间:2017-11-01 06:58:42

标签: php prestashop prestashop-1.6

我目前正在Prestashop中使用以下代码来检索购物车ID。

    public function hookDisplayPDFInvoice($params) {

    $order_invoice = $params['object'];
    $id_order = (int)$order_invoice->id_order;

    $sql = 'SELECT id_cart FROM '._DB_PREFIX_.'orders WHERE id_order="'.$id_order.'"';
    //example id_cart
    $id_cart = Db::getInstance()->execute($sql);
    return $id_cart;

在数据库中,有id_cart和id_timeslot。表名为ps_cart_timeslot。

我很困惑,因为我感到困惑的是为什么我检索的任何数据的数据返回为1。

$ id_order很好,它返回正确的值。我查询的任何数据选择都将返回1.

我错过了什么吗?如果这是一个愚蠢的错误,请原谅我。

谢谢。

1 个答案:

答案 0 :(得分:1)

对于选择使用Db::getInstance()->executeS($sql);或使用单值使用Db::getInstance()->getValue($sql);

但是,从PS 1.6开始,您应该使用查询构建器。

$query = new DbQuery();
$query->select('id_cart')
      ->from('orders')
      ->where('id_order = ' . (int)$id_order);
Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue($query);
// Or array of values
Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($query);

execute()方法仅返回true or false,而executeS()将返回选择结果数组(方法只能用于选择查询),getValue()将返回第一个值在结果中找到。