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 git.master, git.master_jit, rfc.property-hooks
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

This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.

Active branches

Archived branches

Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page


preferences:
181.15 ms | 406 KiB | 5 Q