PHPize Online / SQLize Online  /  SQLtest Online

A A A
Share      Blog   Popular
Copy Format Clear
CREATE TABLE my_table ( id INT AUTO_INCREMENT, column1 INT, column2 INT, PRIMARY KEY (id) ); INSERT INTO my_table(column1, column2) VALUES (2, 1), (1, 9), (3, 3), (5, 2), (3, 8), (1, 1), (2, 2), (4, 4), (9, 2), (4, 11), (2, 5), (1, 6);
Copy Clear
Copy Format Clear
<?php // $mysqli is already declared as a working database connection by this sandbox $array_conditions = [ 'column1 IN (1, 2, 3, 4)', 'column2 IN (1, 2, 3)', 'column1 IN (4, 5, 6)', ]; $groups = []; foreach ($array_conditions as $cond) { if (sscanf($cond, '%s IN (%[^)])', $col, $values) === 2) { $groups[$col] ??= []; array_push($groups[$col], ...explode(', ', $values)); } } $conditions = []; $parameters = []; foreach ($groups as $column => $values) { $values = array_unique($values); $count = count($values); $conditions[] = "$column IN (" . implode(',', array_fill(0, $count, '?')) . ')'; array_push($parameters, ...$values); } $sql = "SELECT * FROM my_table"; if ($conditions) { $sql .= ' WHERE ' . implode(' AND ', $conditions); } var_export($conditions); echo "\n$sql\n"; var_export($parameters); echo "\n---\n"; var_export( $mysqli->execute_query($sql, $parameters)->fetch_all(MYSQLI_ASSOC) );
Show:  
Copy Clear