aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/db/dbal.php
diff options
context:
space:
mode:
authorNils Adermann <naderman@naderman.de>2006-08-11 17:43:03 +0000
committerNils Adermann <naderman@naderman.de>2006-08-11 17:43:03 +0000
commitd8af8223cd258678aca5037db0446aa1ff8ea78a (patch)
tree8827488a1de43b9c004019ba90ff8a5bc54298c7 /phpBB/includes/db/dbal.php
parent7508b00978565e1c1984be6a62e1142059d1daf0 (diff)
downloadforums-d8af8223cd258678aca5037db0446aa1ff8ea78a.tar
forums-d8af8223cd258678aca5037db0446aa1ff8ea78a.tar.gz
forums-d8af8223cd258678aca5037db0446aa1ff8ea78a.tar.bz2
forums-d8af8223cd258678aca5037db0446aa1ff8ea78a.tar.xz
forums-d8af8223cd258678aca5037db0446aa1ff8ea78a.zip
Adding the sql_in_set function which should give us a bit of a performance improvement for queries using IN with just one value
git-svn-id: file:///svn/phpbb/trunk@6261 89ea8834-ac86-4346-8a33-228a782c2dd0
Diffstat (limited to 'phpBB/includes/db/dbal.php')
-rw-r--r--phpBB/includes/db/dbal.php43
1 files changed, 43 insertions, 0 deletions
diff --git a/phpBB/includes/db/dbal.php b/phpBB/includes/db/dbal.php
index dcf9947ddf..53850b77b2 100644
--- a/phpBB/includes/db/dbal.php
+++ b/phpBB/includes/db/dbal.php
@@ -285,6 +285,49 @@ class dbal
return $query;
}
+ function sql_in_set($field, $array)
+ {
+ if (!sizeof($array))
+ {
+ trigger_error('No values specified for SQL IN comparison', E_USER_ERROR);
+ }
+
+ $bitfield = (strpos($field, 'bitfield') !== false);
+
+ $values = array();
+ foreach ($array as $var)
+ {
+ if (is_null($var))
+ {
+ $values[] = 'NULL';
+ }
+ else if (is_string($var))
+ {
+ if (!$bitfield)
+ {
+ $values[] = "'" . $this->sql_escape($var) . "'";
+ }
+ else
+ {
+ $values[] = $this->sql_escape_binary($var);
+ }
+ }
+ else
+ {
+ $values[] = (is_bool($var)) ? intval($var) : $var;
+ }
+ }
+
+ if (sizeof($values) == 1)
+ {
+ return $field . ' = ' . $values[0];
+ }
+ else
+ {
+ return $field . ' IN (' . implode(',', $values) . ')';
+ }
+ }
+
function sql_escape_binary($msg)
{
return "'" . $this->sql_escape($msg) . "'";