コード例 #1
0
ファイル: result-set.lib.php プロジェクト: jijkoun/ssscrape
 /**
  * \private
  *
  * Construct a new AnewtDatabaseResultSet instance (internal use).
  *
  * Do not call this method directly; it is for internal use only.
  *
  * (Note to backend implementors: you should override this constructor, call
  * into the parent, and then store the \c n_rows and \c n_rows_affected
  * values)
  *
  * \param $sql                The SQL query for this result set
  * \param $connection_handle  The internal connection handle
  * \param $result_set_handle  The internal result set handle
  *
  * \see AnewtDatabaseConnection::prepare
  */
 public function __construct($sql, $connection_handle, $result_set_handle)
 {
     $this->sql = $sql;
     $this->connection_handle = $connection_handle;
     $this->result_set_handle = $result_set_handle;
     /* Deduce column types for SELECT queries */
     if (AnewtDatabaseSQLTemplate::query_type_for_sql($sql) == ANEWT_DATABASE_SQL_QUERY_TYPE_SELECT) {
         $this->obtain_field_types();
     }
 }
コード例 #2
0
ファイル: connection.lib.php プロジェクト: jijkoun/ssscrape
 /**
  * Execute a query using the values passed as a single parameter, without
  * retrieving resulting rows.
  *
  * For some query types the number of affected rows is returned. This only
  * works for queries that operate on a number of rows, i.e. \c INSERT, \c
  * UPDATE, \c REPLACE, and \c DELETE queries. For other query types \c null
  * is returned.
  *
  * Note that this method is mostly useless for \c SELECT queries since it
  * will not return any results; use
  * AnewtDatabaseConnection::prepare_execute_fetch or
  * AnewtDatabaseConnection::prepare_execute_fetch_all if you want to
  * retrieve result rows.
  *
  * \param $sql     The SQL query to be prepared (optionally with placeholders)
  * \param $values  Zero or more values to be substituted for the placeholders
  *
  * \return
  *   The number of rows affected by the query.
  *
  * \see DB::prepare_execute
  * \see DB::prepare_executev_fetch_one
  * \see DB::prepare_executev_fetch_all
  */
 public function prepare_executev($sql, $values = null)
 {
     assert('is_string($sql);');
     $pq = $this->prepare($sql);
     $rs = $pq->executev($values);
     $out = null;
     switch (AnewtDatabaseSQLTemplate::query_type_for_sql($sql)) {
         case ANEWT_DATABASE_SQL_QUERY_TYPE_INSERT:
         case ANEWT_DATABASE_SQL_QUERY_TYPE_UPDATE:
         case ANEWT_DATABASE_SQL_QUERY_TYPE_REPLACE:
         case ANEWT_DATABASE_SQL_QUERY_TYPE_DELETE:
             $out = $rs->count_affected();
             break;
         default:
             /* Do nothing */
             break;
     }
     $rs->free();
     return $out;
 }
コード例 #3
0
 public function prepare_executev_fetch_all($sql, $values = null)
 {
     $key = null;
     $store_in_cache = false;
     if (AnewtDatabaseSQLTemplate::query_type_for_sql($sql) == ANEWT_DATABASE_SQL_QUERY_TYPE_SELECT) {
         $key = $this->build_key($sql, $values, true);
         $rows = $this->memcache->get($key);
         if ($rows === false) {
             $this->n_cache_misses++;
             $store_in_cache = true;
         } else {
             $this->n_cache_hits++;
             return $rows;
         }
     }
     $rows = $this->connection_handle->prepare_executev_fetch_all($sql, $values);
     if ($store_in_cache) {
         $this->memcache->set($key, $rows, $this->settings['compression'] ? MEMCACHE_COMPRESSED : 0, $this->settings['expiry']);
     }
     return $rows;
 }