3v4l.org

run code in 300+ PHP versions simultaneously
<?php $metas = array( 'key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3' ); $limit = 10; $config = (object)array('recording_table' => 'recording', 'meta_table' => 'meta'); $join = array(); $params = array(); $types = ''; foreach ($metas as $key => $value) { $join[] = 'm.meta_key=? AND m.meta_value=?'; $params[] = $key; $params[] = $value; $types .= 'ss'; } // add the parameter for the `HAVING` check $params[] = count($metas); $types .= 'i'; // add the limit $params[] = $limit; $types .= 'i'; // make the query string $sql = "SELECT recording_id FROM {$config->recording_table} r JOIN {$config->meta_table} m ON m.recording_id = r.id AND (" . implode(' OR ', $join) . ") GROUP BY r.id HAVING COUNT(*) = ? LIMIT ?"; echo $sql . "\n"; print_r($params); print_r($types);
Output for 7.1.26 - 7.1.33, 7.2.17 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.19, 8.3.0 - 8.3.4, 8.3.6 - 8.3.7
SELECT recording_id FROM recording r JOIN meta m ON m.recording_id = r.id AND (m.meta_key=? AND m.meta_value=? OR m.meta_key=? AND m.meta_value=? OR m.meta_key=? AND m.meta_value=?) GROUP BY r.id HAVING COUNT(*) = ? LIMIT ? Array ( [0] => key1 [1] => value1 [2] => key2 [3] => value2 [4] => key3 [5] => value3 [6] => 3 [7] => 10 ) ssssssii
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 SELECT recording_id FROM recording r JOIN meta m ON m.recording_id = r.id AND (m.meta_key=? AND m.meta_value=? OR m.meta_key=? AND m.meta_value=? OR m.meta_key=? AND m.meta_value=?) GROUP BY r.id HAVING COUNT(*) = ? LIMIT ? Array ( [0] => key1 [1] => value1 [2] => key2 [3] => value2 [4] => key3 [5] => value3 [6] => 3 [7] => 10 ) ssssssii

preferences:
101.05 ms | 403 KiB | 166 Q