0

このクエリの連結に問題があります:

$sql.=' WHERE ticket.dept_id IN('.implode(',',$thisuser->getDepts()).') OR ticket.staff_id='.db_input($thisuser->getId());

これとともに:

AND ticket.brand_id IN('.implode(',',$thisuser->getBrands())

どうすればこれを達成できますか?

4

1 に答える 1

1

同じ行の文字列を次のように連結できます。

$sql.=' WHERE ticket.dept_id IN('.implode(',',$thisuser->getDepts()).') OR ticket.staff_id='.db_input($thisuser->getId()) . ' AND ticket.brand_id IN('.implode(',',$thisuser->getBrands()) . ')';

または、2行目でそれを行うことができます:

$sql.=' WHERE ticket.dept_id IN('.implode(',',$thisuser->getDepts()).') OR ticket.staff_id='.db_input($thisuser->getId());
$sql.=' AND ticket.brand_id IN('.implode(',',$thisuser->getBrands()) . ')';

ただし、元のWHERE句にはが含まれてORいるため、ロジックをそのまま維持する必要があります。AND追加の句を連結する前に、最初の2つの条件を1組の括弧で囲むことをお勧めします。

$sql.=' WHERE (ticket.dept_id IN('.implode(',',$thisuser->getDepts()).') OR ticket.staff_id='.db_input($thisuser->getId()) . ')';
$sql.=' AND ticket.brand_id IN('.implode(',',$thisuser->getBrands()) . ')';
于 2012-12-04T17:52:47.363 に答える