教義\ DBAL \例外の\ DriverException:で
SELECT p.* FROM mod_products_products p
LEFT JOIN mod_products_products_categories c_link ON c_link.product_id = p.id
LEFT JOIN mod_products_brands b ON p.brand_id = b.id
LEFT JOIN mod_products_groups vg ON p.variation_id = vg.id
LEFT JOIN mod_products_categories c ON c_link.category_id = c.id
LEFT JOIN mod_products_group_options vg_o ON vg_o.group_id = vg.id
LEFT JOIN mod_products_group_values vg_o_v ON vg_o_v.option_id = vg_o.id
WHERE (p.name LIKE (?, ?)) AND (p.parent_id = 0) AND (vg_o.disabled=0)
GROUP BY p.id ORDER BY p.name ASC
LIMIT 18446744073709551615 OFFSET 0
を実行中に例外が発生しましたparams ["%big%"、 "%light%"]:SQLSTATE [21000]:カーディナリティ違反:1241オペランドには1列が含まれている必要があります。
エラーは、WHERE (p.name LIKE (?, ?))
のパラメータリストで複数の値が定義されている場合にのみ発生します。
executeQuery()
を使用しており、配列をConnection::PARAM_STR_ARRAY
として渡しています。元の声明では、私は問題点を次のように定義しています。
$builder->andWhere('p.name LIKE (:partial_names)');
partial_namesとして渡された配列が得られないようです。これを引き起こしていることに関するアイデア、およびそれを避ける方法は?
も参照します。http:// stacko verflow.com/questions/1127088/mysql-like-in – bishop
あなたは、mysql LIKEが複数の引数を受け入れることができると思いましたか? –
@YourCommonSense 'foo LIKE( 'bar')'はMySQLで有効なので 'foo LIKE( 'bar'、 'baz')も有効であると考えるのは当然だと思います。 – bishop