original_string: protected function emulate_bound_params($sql, array $params=null) {
          if (empty($params)) {
              return $sql;
          }
          // ok, we have verified sql statement with ? and correct number of params
          $parts = array_reverse(explode('?', $sql));
          $return = array_pop($parts);
          foreach ($params as $param) {
              if (is_bool($param)) {
                  $return .= (int)$param;
              } else if (is_null($param)) {
                  $return .= 'NULL';
              } else if (is_number($param)) {
                  $return .= "'".$param."'"; // we have to always use strings because mysql is using weird automatic int casting
              } else if (is_float($param)) {
                  $return .= $param;
              } else {
                  $param = $this->mysqli->real_escape_string($param);
                  $return .= "'$param'";
              }
              $return .= array_pop($parts);
          }
          return $return;
      }
code: protected function emulate_bound_params($sql, array $params=null) {
          if (empty($params)) {
              return $sql;
          }
          // ok, we have verified sql statement with ? and correct number of params
          $parts = array_reverse(explode('?', $sql));
          $return = array_pop($parts);
          foreach ($params as $param) {
              if (is_bool($param)) {
                  $return .= (int)$param;
              } else if (is_null($param)) {
                  $return .= 'NULL';
              } else if (is_number($param)) {
                  $return .= "'".$param."'"; // we have to always use strings because mysql is using weird automatic int casting
              } else if (is_float($param)) {
                  $return .= $param;
              } else {
                  $param = $this->mysqli->real_escape_string($param);
                  $return .= "'$param'";
              }
              $return .= array_pop($parts);
          }
          return $return;
      }
code_tokens: protected function emulate_bound_params ( $ sql , array $ params = null ) { if ( empty ( $ params ) ) { return $ sql ; } // ok, we have verified sql statement with ? and correct number of params $ parts = array_reverse ( explode ( '?' , $ sql ) ) ; $ return = array_pop ( $ parts ) ; foreach ( $ params as $ param ) { if ( is_bool ( $ param ) ) { $ return .= ( int ) $ param ; } else if ( is_null ( $ param ) ) { $ return .= 'NULL' ; } else if ( is_number ( $ param ) ) { $ return .= "'" . $ param . "'" ; // we have to always use strings because mysql is using weird automatic int casting } else if ( is_float ( $ param ) ) { $ return .= $ param ; } else { $ param = $ this -> mysqli -> real_escape_string ( $ param ) ; $ return .= "'$param'" ; } $ return .= array_pop ( $ parts ) ; } return $ return ; }
docstring: Very ugly hack which emulates bound parameters in queries
  because prepared statements do not use query cache.
docstring_tokens: Very ugly hack which emulates bound parameters in queries because prepared statements do not use query cache .