Db :: getInstance () -> insert () не показывает ошибки, не работает - PullRequest
0 голосов
/ 25 сентября 2019

Я вставляю данные в базу данных.Это не вставляется.Если я делаю то же самое через raw SQL, это работает.Также не отображается никаких ошибок.

<code> $products = Context::getContext()->cart->getProducts();
 foreach($products as $product){
      $id_product = $product['id_product'];
      $is_allowed = (bool) Db::getInstance()->execute("SELECT available_for_order FROM ps_product WHERE id_product=".$id_product); // is product availabe for order when stock is null or zero. 

      // $sql = 'INSERT INTO `cart_log` (`id_product`,`ids_product_attribute`,`stock`,`reference`,`available_for_order`,`created_at`)
      // VALUES (' . $id_product. ', ' . $product['id_product_attribute'] . ',' . $product['stock_quantity'] . ', ' . $product['reference'] .','. $is_allowed .', NOW())';
      // die($sql);
      $data= array(
           'id_product' => (string) $id_product,
           'ids_product_attribute' =>(string) $product['id_product_attribute'],
           'stock' =>(string) $product['stock_quantity'],
           'reference' =>(string) $product['reference'],
           'available_for_order' =>(int) $is_allowed,
           'created_at' => 'NOW())'
      );
      echo "<pre>";
      print_r($data);
      echo "
"; $ result = Db :: getInstance () -> insert ('cart_log', $ data);}

1 Ответ

0 голосов
/ 26 сентября 2019

попытайтесь заменить:

$is_allowed = (bool) Db::getInstance()->execute("SELECT available_for_order FROM ps_product WHERE id_product=".$id_product); // is product availabe for order when stock is null or zero.

на

$is_allowed = (bool) Db::getInstance()->getValue("SELECT available_for_order FROM ps_product WHERE id_product=".$id_product); // is product availabe for order when stock is null or zero. 

execute() вернет true или false, если запрос был выполнен правильно, но не результат запроса,getValue() вернет вам результат запроса.

Существует также getRow() для получения нескольких элементов в одной строке и executeS() для получения нескольких строк.

Привет

...