2017-11-01 8 views
0

私は現在、Prestashopで以下のコードを使用してカートIDを取得しています。Prestashop 1.6.1.14 - データベースクエリが実行時に1を返します

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

Db::getInstance()->executeS($sql);を使用するか、または単一の値は、PS 1.6以降は、クエリビルダを使用する必要がありますしかしDb::getInstance()->getValue($sql);

を使用取得します。

$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); 

​​方法executeS()は、選択結果の配列を返します(メソッドのみ選択クエリのために使用することができる)とgetValue()結果で見つかった最初の値が返されている間のみtrue or falseを返します。

+0

あなた、私の友人は救い主です。 Prestashop 1.6で使用する必要がある標準ですか?もしそうなら、間違ったデータを返したクエリが間違っているかどうかだけ確認できますか? – Enthu

+0

@MuhammadFakhrinBinUmar間違っていませんが、 'execute()'メソッドはクエリが成功するとtrue/falseを返し、 'executeS()は配列としてselect結果を返し、' getValue() 'は結果の最初の値を返します。 – TheDrot

+0

説明をありがとうございました....正確にはなぜ私は返されたデータをそのまま持っているのですか?もう一度ありがとう! – Enthu

関連する問題