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