我目前正在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.
我错过了什么吗?如果这是一个愚蠢的错误,请原谅我。
谢谢。
答案 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()
将返回第一个值在结果中找到。