За последние 24 часа нас посетили 17740 программистов и 1619 роботов. Сейчас ищут 1855 программистов ...

Проблема JSON_CONTAINS

Тема в разделе "MySQL", создана пользователем CrazyBite, 31 янв 2017.

  1. CrazyBite

    CrazyBite Новичок

    С нами с:
    24 ноя 2016
    Сообщения:
    2
    Симпатии:
    0
    PHP:
    1. $cmd ="SELECT `code` FROM `db_pnd` WHERE `sku`=:sku and JSON_CONTAINS(`base`, :base) and JSON_CONTAINS(`type`, :pm);";
    2. try{
    3.   $query = $pdo->prepare($cmd)
    4.   $query->execute(array(":sku"=>$skuid,":pm"=>json_encode(1),":base"=>json_encode($base)));
    5. }catch(PDOException $err){
    6.   die($error->getMessage());
    7. }
    В итоге получается что в SQL запросе фильтруются скобки и запрос выглядит так:
    Код (Text):
    1. SELECT `code` FROM `db_pnd` WHERE `sku`='1020' and JSON_CONTAINS(`base`, '\"db_ik_data\"') and JSON_CONTAINS(`type`, '1')
    А должен выглядеть так:
    Код (Text):
    1. SELECT `code` FROM `db_pnd` WHERE `sku`='1020' and JSON_CONTAINS(`base`, '["db_ik_data"]') and JSON_CONTAINS(`type`, '["1"]')
    Есть какой нибудь не ручной метод править JSON в запросе?
    Скобки походу фильтрует execute.
    Настройки у PDO:
    Код (Text):
    1.  
    2. PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    3. PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
     
  2. alexblack

    alexblack Старожил

    С нами с:
    20 янв 2016
    Сообщения:
    640
    Симпатии:
    381
    CrazyBite нравится это.
  3. CrazyBite

    CrazyBite Новичок

    С нами с:
    24 ноя 2016
    Сообщения:
    2
    Симпатии:
    0
    Спасибо, что то я забылся )