교리 \ 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