protected function where_clause($table, array $conditions=null) {
        // We accept nulls in conditions
        $conditions = is_null($conditions) ? array() : $conditions;

        if (empty($conditions)) {
            return array('', array());
        }

        // Some checks performed under debugging only
        if (debugging()) {
            $columns = $this->get_columns($table);
            if (empty($columns)) {
                // no supported columns means most probably table does not exist
                throw new dml_exception('ddltablenotexist', $table);
            }
            foreach ($conditions as $key=>$value) {
                if (!isset($columns[$key])) {
                    $a = new stdClass();
                    $a->fieldname = $key;
                    $a->tablename = $table;
                    throw new dml_exception('ddlfieldnotexist', $a);
                }
                $column = $columns[$key];
                if ($column->meta_type == 'X') {
                    //ok so the column is a text column. sorry no text columns in the where clause conditions
                    throw new dml_exception('textconditionsnotallowed', $conditions);
                }
            }
        }

        $allowed_types = $this->allowed_param_types();
        $where = array();
        $params = array();

        foreach ($conditions as $key=>$value) {
            if (is_int($key)) {
                throw new dml_exception('invalidnumkey');
            }
            if (is_null($value)) {
                $where[] = "$key IS NULL";
            } else {
                if ($allowed_types & SQL_PARAMS_NAMED) {
                    // Need to verify key names because they can contain, originally,
                    // spaces and other forbidden chars when using sql_xxx() functions and friends.
                    $normkey = trim(preg_replace('/[^a-zA-Z0-9_-]/', '_', $key), '-_');
                    if ($normkey !== $key) {
                        debugging('Invalid key found in the conditions array.');
                    }
                    $where[] = "$key = :$normkey";
                    $params[$normkey] = $value;
                } else {
                    $where[] = "$key = ?";
                    $params[] = $value;
                }
            }
        }
        $where = implode(" AND ", $where);
        return array($where, $params);
    }
protected function where_clause($table, array $conditions=null) {
        // We accept nulls in conditions
        $conditions = is_null($conditions) ? array() : $conditions;

        if (empty($conditions)) {
            return array('', array());
        }

        // Some checks performed under debugging only
        if (debugging()) {
            $columns = $this->get_columns($table);
            if (empty($columns)) {
                // no supported columns means most probably table does not exist
                throw new dml_exception('ddltablenotexist', $table);
            }
            foreach ($conditions as $key=>$value) {
                if (!isset($columns[$key])) {
                    $a = new stdClass();
                    $a->fieldname = $key;
                    $a->tablename = $table;
                    throw new dml_exception('ddlfieldnotexist', $a);
                }
                $column = $columns[$key];
                if ($column->meta_type == 'X') {
                    //ok so the column is a text column. sorry no text columns in the where clause conditions
                    throw new dml_exception('textconditionsnotallowed', $conditions);
                }
            }
        }

        $allowed_types = $this->allowed_param_types();
        $where = array();
        $params = array();

        foreach ($conditions as $key=>$value) {
            if (is_int($key)) {
                throw new dml_exception('invalidnumkey');
            }
            if (is_null($value)) {
                $where[] = "$key IS NULL";
            } else {
                if ($allowed_types & SQL_PARAMS_NAMED) {
                    // Need to verify key names because they can contain, originally,
                    // spaces and other forbidden chars when using sql_xxx() functions and friends.
                    $normkey = trim(preg_replace('/[^a-zA-Z0-9_-]/', '_', $key), '-_');
                    if ($normkey !== $key) {
                        debugging('Invalid key found in the conditions array.');
                    }
                    $where[] = "$key = :$normkey";
                    $params[$normkey] = $value;
                } else {
                    $where[] = "$key = ?";
                    $params[] = $value;
                }
            }
        }
        $where = implode(" AND ", $where);
        return array($where, $params);
    }
protected function where_clause ( $ table , array $ conditions = null ) { // We accept nulls in conditions $ conditions = is_null ( $ conditions ) ? array ( ) : $ conditions ; if ( empty ( $ conditions ) ) { return array ( '' , array ( ) ) ; } // Some checks performed under debugging only if ( debugging ( ) ) { $ columns = $ this -> get_columns ( $ table ) ; if ( empty ( $ columns ) ) { // no supported columns means most probably table does not exist throw new dml_exception ( 'ddltablenotexist' , $ table ) ; } foreach ( $ conditions as $ key => $ value ) { if ( ! isset ( $ columns [ $ key ] ) ) { $ a = new stdClass ( ) ; $ a -> fieldname = $ key ; $ a -> tablename = $ table ; throw new dml_exception ( 'ddlfieldnotexist' , $ a ) ; } $ column = $ columns [ $ key ] ; if ( $ column -> meta_type == 'X' ) { //ok so the column is a text column. sorry no text columns in the where clause conditions throw new dml_exception ( 'textconditionsnotallowed' , $ conditions ) ; } } } $ allowed_types = $ this -> allowed_param_types ( ) ; $ where = array ( ) ; $ params = array ( ) ; foreach ( $ conditions as $ key => $ value ) { if ( is_int ( $ key ) ) { throw new dml_exception ( 'invalidnumkey' ) ; } if ( is_null ( $ value ) ) { $ where [ ] = "$key IS NULL" ; } else { if ( $ allowed_types & SQL_PARAMS_NAMED ) { // Need to verify key names because they can contain, originally, // spaces and other forbidden chars when using sql_xxx() functions and friends. $ normkey = trim ( preg_replace ( '/[^a-zA-Z0-9_-]/' , '_' , $ key ) , '-_' ) ; if ( $ normkey !== $ key ) { debugging ( 'Invalid key found in the conditions array.' ) ; } $ where [ ] = "$key = :$normkey" ; $ params [ $ normkey ] = $ value ; } else { $ where [ ] = "$key = ?" ; $ params [ ] = $ value ; } } } $ where = implode ( " AND " , $ where ) ; return array ( $ where , $ params ) ; }
Returns the SQL WHERE conditions.
@param string $table The table name that these conditions will be validated against.
@param array $conditions The conditions to build the where clause. (must not contain numeric indexes)
@throws dml_exception
@return array An array list containing sql 'where' part and 'params'.
Returns the SQL WHERE conditions .