Rumah php教程 PHP源码 PostgreSQL DB 简单操作类

PostgreSQL DB 简单操作类

May 25, 2016 pm 05:09 PM
db postgresql

Postgresql DB 简单操作类 

只用来执行SQL的 其它的不懂 

//使用 

define('DB_NAME', 'aaaa');// 数据库名 
define('DB_USER', 'root');// 数据库用户 
define('DB_PASSWORD', '123456');//数据库密码 
define('DB_HOST', 'localhost');// 服务器名或服务器ip,一般为localhost 
define('DB_CHARSET', 'utf8');//PostgreSQL编码设置.如果您的程序出现乱码现象,需要设置此项来修复. 请不要随意更改此项,否则将可能导致系统出现乱码现象 
define('DB_PREFIX', 'icms_');// 表名前缀, 同一数据库安装多个请修改此处 
define('DB_PREFIX_TAG', '#iCMS@__');// SQL表名前缀替换 


iDB::query(sql); 
iDB::getValue(sql); 
iDB::getRow(sql); 
iDB::getArray(sql); 

1.iPgsql.class.php

<?php
/**
* iPHP - i PHP Framework
* Copyright (c) 2012 iiiphp.com. All rights reserved.
*
* @author coolmoo <iiiphp@qq.com>
* @site http://www.iiiphp.com
* @licence http://www.iiiphp.com/license
* @version 1.0.1
* @package iDB
* @$Id: iPgsql.class.php 44 2012-03-30 04:02:10Z coolmoo $
*/
define(&#39;DB_PORT&#39;, 5432);
define(&#39;OBJECT&#39;, &#39;OBJECT&#39;, true);
define(&#39;ARRAY_A&#39;, &#39;ARRAY_A&#39;, false);
define(&#39;ARRAY_N&#39;, &#39;ARRAY_N&#39;, false);
 
defined(&#39;SAVEQUERIES&#39;) OR define(&#39;SAVEQUERIES&#39;, true);
 
class iDB{
    public static $show_errors = false;
    public static $num_queries = 0;
    public static $last_query;
    public static $col_info;
    public static $queries;
    public static $func_call;
    public static $last_result;
    public static $num_rows;
    public static $insert_id;
 
    private static $collate;
    private static $time_start;
    private static $last_error ;
    private static $dbh;
    private static $result;
 
    function __construct() {
        if (!self::$dbh)
            self::connect();
    }
    function connect() {
        extension_loaded(&#39;pgsql&#39;) OR die(&#39;您的 PHP 安装看起来缺少 PostgreSQL 数据库部分,
        这对 iPHP 来说是必须的。&#39;);
         
        defined(&#39;DB_COLLATE&#39;) && self::$collate = DB_COLLATE;
 
        self::$dbh = pg_connect("host=".DB_HOST." port=".DB_PORT." dbname=".DB_NAME.
        " user=".DB_USER." password=".DB_PASSWORD);
 
        defined(&#39;DB_CHARSET&#39;) && self::query("set client_encoding to &#39;".DB_CHARSET."&#39;");
 
        self::$dbh OR self::bail("<h1>数据库链接失败</h1>
        <p>请检查 <em><strong>config.php</strong></em> 的配置是否正确!</p><ul>
        <li>请确认主机支持PostgreSQL?</li><li>请确认用户名和密码正确?</li>
        <li>请确认主机名正确?(一般为localhost)</li></ul><p>如果你不确定这些情况,请询问你的主机提供商.
        如果你还需要帮助你可以随时浏览 <a href=&#39;http://www.iiiphp.com&#39;>iPHP 支持论坛</a>.</p>");
        //@mysql_select_db(DB_NAME, self::$dbh) OR self::bail("
        <h1>链接到<em><strong>".DB_NAME."</strong></em>数据库失败</h1>
<p>我们能连接到数据库服务器(即数据库用户名和密码正确) ,但是不能链接到<em><strong>$db</strong></em>数据库.</p>
<ul><li>你确定<em><strong>$db</strong></em>存在?</li></ul>
<p>如果你不确定这些情况,请询问你的主机提供商.如果你还需要帮助你可以随时浏览 
<a href=&#39;http://www.iiiphp.com&#39;>iPHP 支持论坛</a>.</p>");
 
    }
    // ==================================================================
    //  Print SQL/DB error.
 
    function print_error($str = &#39;&#39;) {
        if (!$str)
            $str = pg_result_error(self::$dbh);
 
        $EZSQL_ERROR[]  = array (&#39;query&#39; => self::$last_query, &#39;error_str&#39; => $str);
 
        $str    = htmlspecialchars($str, ENT_QUOTES);
        $query  = htmlspecialchars(self::$last_query, ENT_QUOTES);
        // Is error output turned on or not..
        if ( self::$show_errors ) {
            // If there is an error then take note of it
            die("<div id=&#39;error&#39;>
            <p class=&#39;iPHPDBerror&#39;><strong>iPHP database error:</strong> [$str]<br />
            <code>$query</code></p>
            </div>");
        } else {
            return false;
        }
    }
    // ==================================================================
    //  Kill cached query results
 
    function flush() {
        self::$last_result  = array();
        self::$col_info     = null;
        self::$last_query   = null;
    }
 
    // ==================================================================
    //  Basic Query - see docs for more detail
 
    function query($query,$QT=NULL) {
        if (!self::$dbh) {
            self::connect();
        }
        // filter the query, if filters are available
        // NOTE: some queries are made before the plugins have been loaded, 
        and thus cannot be filtered with this method
        $query=str_replace(DB_PREFIX_TAG,DB_PREFIX, $query);
 
        // initialise return
        $return_val = 0;
        self::flush();
 
        // Log how the function was called
        self::$func_call = __CLASS__."::query(\"$query\")";
 
        // Keep track of the last query for debug..
        self::$last_query = $query;
 
        // Perform the query via std pgsql_query function..
        if (SAVEQUERIES) self::timer_start();
 
        self::$result = pg_query(self::$dbh,$query);
         
 
        self::$num_queries++;
 
        if (SAVEQUERIES) self::$queries[] = array( $query, self::timer_stop());
 
        // If there is an error then take note of it..
        if ( self::$last_error = pg_result_error(self::$result) ) {
            self::print_error();
            return false;
        }
        $QH = strtoupper(substr($query,0,strpos($query, &#39; &#39;)));
        if (in_array($QH,array("INSERT","DELETE","UPDATE","REPLACE"))) {
            $rows_affected = pg_affected_rows (self::$result);
            // Take note of the insert_id
            if (in_array($QH,array("INSERT","REPLACE"))) {
                self::$insert_id = pg_last_oid(self::$result);
            }
            // Return number of rows affected
            $return_val = $rows_affected;
        } else {
            if($QT=="field") {
                $i = 0;
                while ($i < pg_num_fields(self::$result)) {
                    self::$col_info[$i] = pg_field_name(self::$result);
                    $i++;
                }
            }else {
                $num_rows = 0;
                while ( $row = pg_fetch_object(self::$result) ) {
                    self::$last_result[$num_rows] = $row;
                    $num_rows++;
                }
                // Log number of rows the query returned
                self::$num_rows = $num_rows;
 
                // Return number of rows selected
                $return_val = $num_rows;
            }
            pg_free_result(self::$result);
        }
 
        return $return_val;
    }
    /**
     * Insert an array of data into a table
     * @param string $table WARNING: not sanitized!
     * @param array $data should not already be SQL-escaped
     * @return mixed results of self::query()
     */
    function insert($table, $data) {
//      $data = add_magic_quotes($data);
        $fields = array_keys($data);
    return self::query("INSERT INTO ".DB_PREFIX_TAG."{$table} (`" . implode(&#39;`,`&#39;,$fields) . "`) 
        VALUES (&#39;".implode("&#39;,&#39;",$data)."&#39;)");
    }
 
    /**
     * Update a row in the table with an array of data
     * @param string $table WARNING: not sanitized!
     * @param array $data should not already be SQL-escaped
     * @param array $where a named array of WHERE column => value relationships. 
      Multiple member pairs will be joined with ANDs.  
      WARNING: the column names are not currently sanitized!
     * @return mixed results of self::query()
     */
    function update($table, $data, $where) {
//      $data = add_magic_quotes($data);
        $bits = $wheres = array();
        foreach ( array_keys($data) as $k )
            $bits[] = "`$k` = &#39;$data[$k]&#39;";
 
        if ( is_array( $where ) )
            foreach ( $where as $c => $v )
                $wheres[] = "$c = &#39;" . addslashes( $v ) . "&#39;";
        else
            return false;
        return self::query("UPDATE ".DB_PREFIX_TAG."{$table} SET " 
        . implode( &#39;, &#39;, $bits ) . &#39; WHERE &#39; . 
        implode( &#39; AND &#39;, $wheres ) . &#39; LIMIT 1&#39; );
    }
    /**
     * Get one variable from the database
     * @param string $query (can be null as well, for caching, see codex)
     * @param int $x = 0 row num to return
     * @param int $y = 0 col num to return
     * @return mixed results
     */
    function getValue($query=null, $x = 0, $y = 0) {
        self::$func_call = __CLASS__."::getValue(\"$query\",$x,$y)";
        if ( $query )
            self::query($query);
 
        // Extract var out of cached results based x,y vals
        if ( !empty( self::$last_result[$y] ) ) {
            $values = array_values(get_object_vars(self::$last_result[$y]));
        }
        // If there is a value return it else return null
        return (isset($values[$x]) && $values[$x]!==&#39;&#39;) ? $values[$x] : null;
    }
 
    /**
     * Get one row from the database
     * @param string $query
     * @param string $output ARRAY_A | ARRAY_N | OBJECT
     * @param int $y row num to return
     * @return mixed results
     */
    function getRow($query = null, $output = OBJECT, $y = 0) {
        self::$func_call = __CLASS__."::getRow(\"$query\",$output,$y)";
        if ( $query )
            self::query($query);
 
        if ( !isset(self::$last_result[$y]) )
            return null;
 
        if ( $output == OBJECT ) {
            return self::$last_result[$y] ? self::$last_result[$y] : null;
        } elseif ( $output == ARRAY_A ) {
            return self::$last_result[$y] ? get_object_vars(self::$last_result[$y]) : null;
        } elseif ( $output == ARRAY_N ) {
            return self::$last_result[$y] 
            ? array_values(get_object_vars(self::$last_result[$y])) : null;
        } else {
            self::print_error(__CLASS__."::getRow(string query, output type, int offset) 
            -- Output type must be one of: OBJECT, ARRAY_A, ARRAY_N");
        }
    }
 
    /**
     * Return an entire result set from the database
     * @param string $query (can also be null to pull from the cache)
     * @param string $output ARRAY_A | ARRAY_N | OBJECT
     * @return mixed results
     */
    function getArray($query = null, $output = ARRAY_A) {
        self::$func_call = __CLASS__."::getArray(\"$query\", $output)";
 
        if ( $query )
            self::query($query);
 
        // Send back array of objects. Each row is an object
        if ( $output == OBJECT ) {
            return self::$last_result;
        } elseif ( $output == ARRAY_A || $output == ARRAY_N ) {
            if ( self::$last_result ) {
                $i = 0;
                foreach( (array) self::$last_result as $row ) {
                    if ( $output == ARRAY_N ) {
                        // ...integer-keyed row arrays
                        $new_array[$i] = array_values( get_object_vars( $row ) );
                    } else {
                        // ...column name-keyed row arrays
                        $new_array[$i] = get_object_vars( $row );
                    }
                    ++$i;
                }
                return $new_array;
            } else {
                return null;
            }
        }
    }
 
    /**
     * Gets one column from the database
     * @param string $query (can be null as well, for caching, see codex)
     * @param int $x col num to return
     * @return array results
     */
    function getCol($query = null , $x = 0) {
        if ( $query )
            self::query($query);
 
        $new_array = array();
        // Extract the column values
        for ( $i=0; $i < count(self::$last_result); $i++ ) {
            $new_array[$i] = self::getValue(null, $x, $i);
        }
        return $new_array;
    }
 
    /**
     * Grabs column metadata from the last query
     * @param string $info_type one of name, table, def, max_length, not_null, 
     primary_key, multiple_key, unique_key, numeric, blob, type, unsigned, zerofill
     * @param int $col_offset 0: col name. 1: which table the col&#39;s in. 2: col&#39;s max
      length. 3: if the col is numeric. 4: col&#39;s type
     * @return mixed results
     */
    function get_col_info($query = null ,$info_type = &#39;name&#39;, $col_offset = -1) {
        if ( $query )
            self::query($query,"field");
 
        if ( self::$col_info ) {
            if ( $col_offset == -1 ) {
                $i = 0;
                foreach(self::$col_info as $col ) {
                    $new_array[$i] = $col->{$info_type};
                    $i++;
                }
                return $new_array;
            } else {
                return self::$col_info[$col_offset]->{$info_type};
            }
        }
    }
    function version() {
        // Make sure the server has PostgreSQL 4.0
        $v = pg_version(self::$dbh);
        return $v[&#39;client&#39;];
    }
 
    /**
     * Starts the timer, for debugging purposes
     */
    function timer_start() {
        $mtime = microtime();
        $mtime = explode(&#39; &#39;, $mtime);
        self::$time_start = $mtime[1] + $mtime[0];
        return true;
    }
 
    /**
     * Stops the debugging timer
     * @return int total time spent on the query, in milliseconds
     */
    function timer_stop() {
        $mtime = microtime();
        $mtime = explode(&#39; &#39;, $mtime);
        $time_end = $mtime[1] + $mtime[0];
        $time_total = $time_end - self::$time_start;
        return $time_total;
    }
 
    /**
     * Wraps fatal errors in a nice header and footer and dies.
     * @param string $message
     */
    function bail($message){ // Just wraps errors in a nice header and footer
        if ( !self::$show_errors ) {
            return false;
        }
        header(&#39;Content-Type: text/html; charset=utf8&#39;);
        echo &#39;<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional
        //EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
        <html xmlns="http://www.w3.org/1999/xhtml"><head><title>iPHP PostgreSQL Error</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     </head><body><h1 id="logo"><img alt="iPHP" src="http://www.iiiphp.com/doc/iPHP.logo.gif" /></h1>
        <p>&#39;.$message.&#39;</p></body></html>&#39;;
        exit();
    }
}
Salin selepas log masuk


 以上就是PostgreSQL DB 简单操作类的内容,更多相关内容请关注PHP中文网(www.php.cn)!


Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Analisis perbandingan teknologi pangkalan data Oracle dan DB2 Analisis perbandingan teknologi pangkalan data Oracle dan DB2 Mar 11, 2024 am 09:54 AM

Oracle dan DB2 ialah dua sistem pengurusan pangkalan data hubungan (RDBMS) yang terkenal yang digunakan secara meluas dalam aplikasi perusahaan. Dalam artikel ini, kami akan membandingkan dua teknologi pangkalan data Oracle dan DB2 dan menganalisisnya secara terperinci, termasuk analisis ciri, prestasi, fungsi dan contoh penggunaannya. 1. Gambaran keseluruhan teknologi pangkalan data Oracle Oracle ialah sistem pengurusan pangkalan data hubungan yang dibangunkan oleh Oracle Corporation dari Amerika Syarikat. Ia digunakan secara meluas dalam aplikasi peringkat perusahaan dan mempunyai prestasi dan kestabilan yang kukuh.

Perbandingan dan perbezaan sintaks SQL antara Oracle dan DB2 Perbandingan dan perbezaan sintaks SQL antara Oracle dan DB2 Mar 11, 2024 pm 12:09 PM

Oracle dan DB2 ialah dua sistem pengurusan pangkalan data hubungan yang biasa digunakan, setiap satunya mempunyai sintaks dan ciri SQL tersendiri. Artikel ini akan membandingkan dan membezakan antara sintaks SQL Oracle dan DB2, dan memberikan contoh kod khusus. Sambungan pangkalan data Dalam Oracle, gunakan pernyataan berikut untuk menyambung ke pangkalan data: CONNECTusername/password@database Dalam DB2, pernyataan untuk menyambung ke pangkalan data adalah seperti berikut: CONNECTTOdataba

Analisis perbandingan prestasi pangkalan data Oracle dan DB2 Analisis perbandingan prestasi pangkalan data Oracle dan DB2 Mar 09, 2024 pm 10:00 PM

Pangkalan data Oracle dan DB2 ialah dua sistem pengurusan pangkalan data hubungan terkemuka yang digunakan secara meluas dalam aplikasi peringkat perusahaan. Dalam aplikasi praktikal, prestasi pangkalan data selalunya merupakan salah satu petunjuk penting untuk menilai kualiti sistem pangkalan data. Artikel ini akan menjalankan analisis perbandingan prestasi pangkalan data Oracle dan DB2, dan menggunakan contoh kod khusus untuk menunjukkan perbezaan antara mereka. 1. Analisis prestasi pangkalan data Oracle Pangkalan data Oracle ialah sistem pengurusan pangkalan data yang berkuasa dengan kebolehskalaan dan kestabilan yang baik.

db是什么文件格式? db是什么文件格式? May 19, 2021 am 11:56 AM

db是“datebase”的缩写,是“数据库文件”的一种格式,是软件用于存放数据的一个文件,相当于数据库,每种软件都有它自己的存放格式。例如Win7系统下的“Thumbs.db”就是缩略图数据文件,所以db文件并不是特定的文件格式。

MySQL dan PostgreSQL: Perbandingan prestasi dan petua pengoptimuman MySQL dan PostgreSQL: Perbandingan prestasi dan petua pengoptimuman Jul 13, 2023 pm 03:33 PM

MySQL dan PostgreSQL: Perbandingan Prestasi dan Petua Pengoptimuman Semasa membangunkan aplikasi web, pangkalan data adalah komponen yang sangat diperlukan. Apabila memilih sistem pengurusan pangkalan data, MySQL dan PostgreSQL adalah dua pilihan biasa. Kedua-duanya ialah sistem pengurusan pangkalan data hubungan sumber terbuka (RDBMS), tetapi terdapat beberapa perbezaan dalam prestasi dan pengoptimuman. Artikel ini akan membandingkan prestasi MySQL dan PostgreSQL dan memberikan beberapa petua pengoptimuman. Perbandingan prestasi membandingkan dua pengurusan pangkalan data

MySQL dan PostgreSQL: Amalan Terbaik dalam Pembangunan Web MySQL dan PostgreSQL: Amalan Terbaik dalam Pembangunan Web Jul 14, 2023 pm 02:34 PM

MySQL dan PostgreSQL: Amalan Terbaik dalam Pembangunan Web Pengenalan: Dalam dunia moden pembangunan web, pangkalan data merupakan komponen penting. Apabila memilih pangkalan data, pilihan biasa ialah MySQL dan PostgreSQL. Artikel ini akan merangkumi amalan terbaik untuk menggunakan MySQL dan PostgreSQL dalam pembangunan web dan menyediakan beberapa contoh kod. 1. Senario yang boleh digunakan MySQL sesuai untuk kebanyakan aplikasi web, terutamanya yang memerlukan prestasi tinggi, kebolehskalaan dan kemudahan penggunaan.

Apakah format fail db? Apakah format fail db? Mar 07, 2023 pm 05:27 PM

db ialah format fail pangkalan data, iaitu fail yang digunakan oleh perisian untuk menyimpan data Ia bersamaan dengan pangkalan data. Setiap perisian mempunyai format storan sendiri, iaitu cara data disusun akhiran beberapa fail data perisian ialah DB. Contohnya, Thumbs.db di bawah sistem Win7 ialah fail data lakaran kenit oleh itu, fail db bukan format fail tertentu.

Perbandingan ciri antara sistem pengurusan pangkalan data Oracle dan DB2 Perbandingan ciri antara sistem pengurusan pangkalan data Oracle dan DB2 Mar 11, 2024 am 08:57 AM

Oracle dan DB2 ialah dua sistem pengurusan pangkalan data hubungan biasa, masing-masing mempunyai ciri dan kelebihan tersendiri. Artikel ini akan membandingkan ciri-ciri Oracle dan DB2, dan menyediakan contoh kod khusus untuk menggambarkan perbezaan antara mereka. 1. Ciri-ciri sistem pengurusan pangkalan data Oracle: Enjin storan: Pangkalan data Oracle menggunakan enjin storan uniknya sendiri, dipanggil Enjin Pangkalan Data Oracle (OracleDatabaseEngine), yang boleh mengendalikan penyimpanan data berskala besar.

See all articles