SQL Relay PHP API的封装(2)

<?php
/**
 *  sqlr.class.php 数据库实现类
 *
 */

final class sqlr {
    
    /**
     * 数据库配置信息
     */
    private $config = null;
    
    /**
     * 数据库连接资源句柄
     */
    public $link = null;
    
    /**
     * 最近一次查询资源句柄
     */
    public $lastqueryid = null;
    protected $_fetchMode    = 'OCI_ASSOC';
    protected $_execute_mode = null;
    public static  $_affected_rows = null;
    /**
     *  统计数据库查询次数
     */
    public $querycount = 0;
    
    public function __construct() {

    }
    
    /**
     * 打开数据库连接,有可能不真实连接数据库
     * @param $config    数据库连接参数
     *             
     * @return void
     */
    public function open($config) {
        $this->config = $config;
        if($config['autoconnect'] == 1) {
             $this->connect();
        }
    }

    /**
     * 真正开启数据库连接
     *             
     * @return void
     */
    public function connect() {
        if(!$this->link = sqlrcon_alloc($this->config['hostname'],$this->config['port'],$this->config['socket'],$this->config['username'],$this->config['password'],$this->config['retrytime'],$this->config['trynum'])){
            $this->halt('Can not connect to Oracle server');
            return false;
        };
        //$this->lastqueryid = sqlrcur_alloc($this->link);
        //$this->_setExecuteMode(OCI_COMMIT_ON_SUCCESS);
        return $this->link;
    }

    /**
     * 数据库查询执行方法
     * @param $sql 要执行的sql语句
     * @return 查询资源句柄
     */
    private function execute($sql) {
        if(!is_resource($this->link)) {
            $this->connect();
        }
        if($this->lastqueryid) {
            $this->free();
        }
        if (is_resource($this->link)) {
            $this->lastqueryid = sqlrcur_alloc($this->link);
            $this->_setExecuteMode(OCI_COMMIT_ON_SUCCESS);
        }
        if (!$this->lastqueryid)
        {
            return false;
        }
        $this->querycount++;

        if (!$this->lastqueryid) {
            return false;
        }
        @sqlrcur_prepareQuery($this->lastqueryid, $sql);
        $retval = @sqlrcur_executeQuery($this->lastqueryid);
        //$retval = @sqlrcur_sendQuery($this->lastqueryid, $sql);
        self::$_affected_rows = sqlrcur_affectedRows($this->lastqueryid);
        sqlrcon_endSession($this->link);
        if ($retval === false)
        {
            return false;
        }
        return $this->lastqueryid;
    }

    /**
     * 执行sql查询
     * @param $data         需要查询的字段值[例`name`,`gender`,`birthday`]
     * @param $table         数据表
     * @param $where         查询条件[例`name`='$name']
     * @param $limit         返回结果范围[例:10或10,10 默认为空]
     * @param $order         排序方式    [默认按数据库默认方式排序]
     * @param $group         分组方式    [默认为空]
     * @param $key             返回数组按键名排序
     * @return array        查询结果集数组
     */
    public function select($data, $table, $where = '', $limit = '', $order = '', $group = '', $key = '') {
        $where = $where == '' ? '' : ' WHERE '.$where;
        $order = $order == '' ? '' : ' ORDER BY '.$order;
        $group = $group == '' ? '' : ' GROUP BY '.$group;
        //$limit = $limit == '' ? '' : ' LIMIT '.$limit;
        $field = explode(',', $data);
        array_walk($field, array($this, 'add_special_char'));
        $data = implode(',', $field);
        $sql = 'SELECT '.$data.' FROM '.$table.$where.$group.$order;
        if($limit != '') {
            if(strpos($limit, ',')) {
                $arr = explode(',', $limit);
                $sql = "SELECT * FROM (
                        SELECT r.*, ROWNUM as row_number FROM ( $sql ) r
                        WHERE ROWNUM <= ".$arr[1]." )
                        WHERE ".($arr[0]+1)."<= row_number";
            } else {
                $sql = "SELECT Z1.*, ROWNUM RN
                        FROM ($sql) Z1
                        WHERE ROWNUM <= $limit";
            }
        }
        //print_r($sql);
        $this->execute($sql);
        
        if(!is_resource($this->lastqueryid)) {
            return $this->lastqueryid;
        }

        $datalist = array();
        $rownum = 0;
        while(($rs = $this->fetch_next($rownum)) != false) {
            if($key) {
                $datalist[$rs[$key]] = $rs;
            } else {
                $datalist[] = $rs;
            }
            $rownum++;
        }
        $this->free_result();
        //print_r($datalist);
        return $datalist;
    }
    /**
     * 执行sql查询
     * @param $data         需要查询的字段值[例`name`,`gender`,`birthday`]
     * @param $table         数据表
     * @param $where         查询条件[例`name`='$name']
     * @param $limit         返回结果范围[例:10或10,10 默认为空]
     * @param $order         排序方式    [默认按数据库默认方式排序]
     * @param $group         分组方式    [默认为空]
     * @param $key             返回数组按键名排序
     * @return array        查询结果集数组
     */
    public function selectA($data, $table, $where = '', $limit = '', $order = '', $group = '', $key = '') {
        $where = $where == '' ? '' : ' WHERE '.$where;
        $order = $order == '' ? '' : ' ORDER BY '.$order;
        $group = $group == '' ? '' : ' GROUP BY '.$group;
        //$limit = $limit == '' ? '' : ' LIMIT '.$limit;
        $field = explode(',', $data);
        array_walk($field, array($this, 'add_special_char'));
        $data = implode(',', $field);
        $sql = 'SELECT '.$data.' FROM '.$table.$where.$group.$order;
        if($limit != '') {
            if(strpos($limit, ',')) {
                $arr = explode(',', $limit);
                $sql = "SELECT * FROM (
                        SELECT r.*, ROWNUM as row_number FROM ( $sql ) r
                        WHERE ROWNUM <= ".$arr[1]." )
                        WHERE ".($arr[0]+1)."<= row_number";
            } else {
                $sql = "SELECT Z1.*, ROWNUM RN
                        FROM ($sql) Z1
                        WHERE ROWNUM <= $limit";
            }
        }
        //print_r($sql);//exit;
        $this->execute($sql);
        if(!is_resource($this->lastqueryid)) {
            return $this->lastqueryid;
        }

        $datalist = array();
        $rownum = 0;
        while(($rs = $this->fetch_next($rownum,OCI_RETURN_LOBS)) != false) {
            if($key) {
                $datalist[$rs[$key]] = $rs;
            } else {
                $datalist[] = $rs;
            }
            $rownum++;
        }
        $this->free_result();
        return $datalist;
    }
    /**
     * 获取单条记录查询
     * @param $data         需要查询的字段值[例`name`,`gender`,`birthday`]
     * @param $table         数据表
     * @param $where         查询条件
     * @param $order         排序方式    [默认按数据库默认方式排序]
     * @param $group         分组方式    [默认为空]
     * @return array/null    数据查询结果集,如果不存在,则返回空
     */
    public function get_one($data, $table, $where = '', $order = '', $group = '') {
        $where = $where == '' ? '' : ' WHERE '.$where;
        $order = $order == '' ? '' : ' ORDER BY '.$order;
        $group = $group == '' ? '' : ' GROUP BY '.$group;
        //$limit = ' LIMIT 1';
        $field = explode( ',', $data);
        array_walk($field, array($this, 'add_special_char'));
        $data = implode(',', $field);

        $sql = 'SELECT '.$data.' FROM '.$table.$where.$group.$order;//.$limit;
        //print_R($sql);//exit;
        $this->execute($sql);
        $res = $this->fetch_next();
        //print_R($res);
        $this->free_result();
        
        return $res;
    }
    //取clob字段 luyerose
    public function get_oneA($data, $table, $where = '', $order = '', $group = '') {
        $where = $where == '' ? '' : ' WHERE '.$where;
        $order = $order == '' ? '' : ' ORDER BY '.$order;
        $group = $group == '' ? '' : ' GROUP BY '.$group;
        //$limit = ' LIMIT 1';
        $field = explode( ',', $data);
        array_walk($field, array($this, 'add_special_char'));
        $data = implode(',', $field);

        $sql = 'SELECT '.$data.' FROM '.$table.$where.$group.$order;//.$limit;
        //print_R($sql);exit;
        $this->execute($sql);
        $res = $this->fetch_next(0,OCI_RETURN_LOBS);
        //print_R($res);
        $this->free_result();
        
        return $res;
    }    
    /**
     * 遍历查询结果集
     * @param $type        返回结果集类型    
     *                     OCI_ASSOC,OCI_NUM 和 OCI_BOTH
     * @return array
     */
    public function fetch_next($rownum = 0,$type=OCI_ASSOC) {
        $res = sqlrcur_getRowAssoc($this->lastqueryid, $rownum);
        if(!$res) {
            $this->free_result();
        }
        return $res;
    }
    
    /**
     * 释放查询资源
     * @return void
     */
    public function free_result() {
        if(is_resource($this->lastqueryid)) {
            sqlrcur_free($this->lastqueryid);
            $this->lastqueryid = null;
        }
    }
    
    /**
     * 直接执行sql查询
     * @param $sql                            查询sql语句
     * @return    boolean/query resource        如果为查询语句,返回资源句柄,否则返回true/false
     */
    public function query($sql) {
        $this -> execute($sql);
        if(!is_resource($this->lastqueryid)) {
            return $this->lastqueryid;
        }

        $datalist = array();
        $rownum =0;
        while(($rs = $this->fetch_next($rownum)) != false) {
            $datalist[] = $rs;
            $rownum++;
        }
        $this->free_result();
        //print_r($datalist);exit;
        return $datalist;
    }
    
    /**
     * 执行添加记录操作
     * @param $data         要增加的数据,参数为数组。数组key为字段值,数组值为数据取值
     * @param $table         数据表
     * @return boolean
     */
    public function insert($data, $table, $return_insert_id = false, $relpace = false) {
        if(!is_array( $data ) || $table == '' || count($data) == 0) {
            return false;
        }
        
        $fielddata = array_keys($data);
        $valuedata = array_values($data);
        array_walk($fielddata, array($this, 'add_special_char'));
        array_walk($valuedata, array($this, 'escape_string'));
        
        $field = implode (',', $fielddata);
        $value = implode (',', $valuedata);

        $cmd = 'INSERT INTO';
        $sql = $cmd.' '.$table.'('.$field.') VALUES ('.$value.')';
        //print_r($sql);exit;
        $return = $this->execute($sql);
        return $return_insert_id ? $this->insert_id($table) : $return;
    }
    
    /**
     * 获取最后一次添加记录的主键号
     * @return int
     */
    public function insert_id($table) {
        return 0;
    }
    
    /**
     * 执行更新记录操作
     * @param $data         要更新的数据内容,参数可以为数组也可以为字符串,建议数组。
     *                         为数组时数组key为字段值,数组值为数据取值
     *                         为字符串时[例:`name`='phpcms',`hits`=`hits`+1]。
     *                        为数组时[例: array('name'=>'phpcms','password'=>'123456')]
     *                        数组可使用array('name'=>'+=1', 'base'=>'-=1');程序会自动解析为`name` = `name` + 1, `base` = `base` - 1
     * @param $table         数据表
     * @param $where         更新数据时的条件
     * @return boolean
     */
    public function update($data, $table, $where = '') {
        if($table == '' or $where == '') {
            return false;
        }

        $where = ' WHERE '.$where;
        $field = '';
        if(is_string($data) && $data != '') {
            $field = $data;
        } elseif (is_array($data) && count($data) > 0) {
            $fields = array();
            foreach($data as $k=>$v) {
                switch (substr($v, 0, 2)) {
                    case '+=':
                        $v = substr($v,2);
                        if (is_numeric($v)) {
                            $fields[] = $this->add_special_char($k).'='.$this->add_special_char($k).'+'.$this->escape_string($v, '', false);
                        } else {
                            continue;
                        }
                        
                        break;
                    case '-=':
                        $v = substr($v,2);
                        if (is_numeric($v)) {
                            $fields[] = $this->add_special_char($k).'='.$this->add_special_char($k).'-'.$this->escape_string($v, '', false);
                        } else {
                            continue;
                        }
                        break;
                    default:
                        $fields[] = $this->add_special_char($k).'='.$this->escape_string($v);
                }
            }
            $field = implode(',', $fields);
        } else {
            return false;
        }

        $sql = 'UPDATE '.$table.' SET '.$field.$where;
        //print_R($sql);
        return $this->execute($sql);
    }

    public function updateA($column,$val,$table, $where = '') {
        if($table == '' or $where == '') {
            return false;
        }
        if(!is_resource($this->link)) {
            $this->connect();
        }
        if (is_resource($this->link)) {
            $this->lastqueryid = sqlrcur_alloc($this->link);
            $this->_setExecuteMode(OCI_COMMIT_ON_SUCCESS);
        }
        sqlrcur_prepareQuery($this->lastqueryid,"UPDATE $table set $column = :stringval WHERE $where");
        sqlrcur_inputBindClob($this->lastqueryid,"stringval",$val,strlen($val));    
        sqlrcur_executeQuery($this->lastqueryid);

        return $this->lastqueryid;
    }
    /**
     * 执行删除记录操作
     * @param $table         数据表
     * @param $where         删除数据条件,不充许为空。
     *                         如果要清空表,使用empty方法
     * @return boolean
     */
    public function delete($table, $where) {
        if ($table == '' || $where == '') {
            return false;
        }
        $where = ' WHERE '.$where;
        $sql = 'DELETE FROM '.$table.$where;
        return $this->execute($sql);
    }
    
    /**
     * 获取最后数据库操作影响到的条数
     * @return int
     */
    public function affected_rows() {
        if(self::$_affected_rows) {
            return self::$_affected_rows;
        } else {
            return 0;
        }        
    }
    
    /**
     * 获取数据表主键
     * @param $table         数据表
     * @return array
     */
    public function get_primary($table) {
        $sql = "select col.column_name as pk
                from user_constraints con,  user_cons_columns col
                where con.constraint_name = col.constraint_name
                and con.constraint_type='P'
                and col.table_name = '$table'";
        $this->execute($sql);
        $result = array();
        $rownum = 0;
        while($r = $this->fetch_next($rownum)) {
            $result[] = $r['PK'];
            $rownum++;
        }
        return $result;
    }

    /**
     * 获取表字段
     * @param $table         数据表
     * @return array
     */
    public function get_fields($table) {
        $sql = "select COLUMN_NAME,DATA_TYPE,DATA_PRECISION,DATA_SCALE,NULLABLE
                from user_tab_columns
                where table_name ='$table'";
        $fields = array();
        $this->execute($sql);
        $rownum = 0;
        while($r = $this->fetch_next($rownum)) {
            $fields[] = $r['COLUMN_NAME'];
            $rownum++;
        }
        return $fields;
    }

    /**
     * 检查不存在的字段
     * @param $table 表名
     * @return array
     */
    public function check_fields($table, $array) {
        $fields = $this->get_fields($table);
        $nofields = array();
        foreach($array as $v) {
            if(!array_key_exists($v, $fields)) {
                $nofields[] = $v;
            }
        }
        return $nofields;
    }

    /**
     * 检查表是否存在
     * @param $table 表名
     * @return boolean
     */
    public function table_exists($table) {
        $tables = $this->list_tables();
        return in_array($table, $tables) ? 1 : 0;
    }
    
    public function list_tables() {
        $tables = array();
        $sql = "select * from user_tables";
        $this->execute($sql);
        $rownum = 0;
        while($r = $this->fetch_next($rownum)) {
            $tables[] = $r["TABLE_NAME"];
            $rownum++;
        }
        return $tables;
    }

    /**
     * 检查字段是否存在
     * @param $table 表名
     * @return boolean
     */
    public function field_exists($table, $field) {
        $fields = $this->get_fields($table);
        return array_key_exists($field, $fields);
    }

    /**
     * 返回结果的行数
     * @param unknown_type $sql
     */
    public function num_rows($sql) {
        $this->lastqueryid = $this->execute($sql);
        return sqlrcur_rowCount($this->lastqueryid);
    }
    /**
     * 返回结果的列数
     * @param unknown_type $sql
     */
    public function num_fields($sql) {
        $this->lastqueryid = $this->execute($sql);
        return sqlrcur_colCount($this->lastqueryid);
    }
    /**
     * 返回一行中的某列
     * @param unknown_type $sql
     * @param unknown_type $row
     */
    public function result($sql, $row) {
        $this->lastqueryid = $this->execute($sql);
        return @sqlrcur_getRowAssoc($this->lastqueryid, $row);
    }
    /**
     * 错误信息
     */
    public function error() {
        $error = @sqlrcur_errorMessage($this->link);
        return $error['message'];
    }
    /**
     * 错误编码
     */
    public function errno() {
        //$error = @oci_error($this->link);
        $error['code'] = '';
        return $error['code'];
    }
    /**
     * 版本信息
     */
    public function version() {
        if(!is_resource($this->link)) {
            $this->connect();
        }
        return sqlrcon_dbVersion($this->link);
    }
    /**
     * 关闭连接
     */
    public function close() {
        if (is_resource($this->link)) {
            @sqlrcon_free($this->link);
        }
    }
    /**
     * 展示报错信息
     * @param unknown_type $message
     * @param unknown_type $sql
     */
    public function halt($message = '', $sql = '') {
        if(is_array($message)) {
            $message = $message['message'];
        }
        $this->errormsg = "<b>Oracle Query : </b> $sql <br /><b> Oracle Error : </b>".$this->error()." <br /> <b>Oracle Errno : </b>".$this->errno()." <br /><b> Message : </b> $message <br />";
        $msg = $this->errormsg;
            echo '<div style="font-size:12px;text-align:left; border:1px solid #9cc9e0; padding:1px 4px;color:#000000;font-family:Arial, Helvetica,sans-serif;"><span>'.$msg.'</span></div>';
            exit;
    }

    /**
     * 对字段两边加反引号,以保证数据库安全
     * @param $value 数组值
     */
    public function add_special_char(&$value) {
        if('*' == $value || false !== strpos($value, '(') || false !== strpos($value, '.') || false !== strpos ( $value, '`')) {
            //不处理包含* 或者 使用了sql方法。
        } else {
            $value = trim($value);
        }
        return $value;
    }
    
    /**
     * 对字段值两边加引号,以保证数据库安全
     * @param $value 数组值
     * @param $key 数组key
     * @param $quotation
     */
    public function escape_string(&$value, $key='', $quotation = 1) {
        if ($quotation && $value !== "SYSDATE" && substr($value, 0,7) !== "TO_DATE" && $value !== "sysdate" && strpos($value,'.nextval')== false) {
            $q = '\'';
        } else {
            $q = '';
        }
        $value = $q.$value.$q;
        return $value;
    }

    /**
     * @return int
     */
    public function _getExecuteMode()
    {
        return $this->_execute_mode;
    }
    /**
     * @param integer $mode
     */
    private function _setExecuteMode($mode)
    {
        switch($mode)
        {
            case OCI_COMMIT_ON_SUCCESS:
            case OCI_DEFAULT:
            case OCI_DESCRIBE_ONLY:
                sqlrcon_autoCommitOn($this->lastqueryid);
                break;
            default:
                return false;
                break;
        }
    }
    /**
     * 释放查询结果
     */
    public function free()
    {
        sqlrcur_free($this->lastqueryid);
        $this->lastqueryid = null;
    }
    /**
     * 释放查询结果
     */
    public function get_auto_id($table)
    {
        $sql = "select " . $table . ".nextval id from dual";
        $this->execute($sql);
        $res = $this->fetch_next(OCI_ASSOC);
        $this->free_result();
        return $res['ID'];
    }
}
?>

------------------------------------------------------------------------------------------------------------------------------------------

<!DOCTYPE html><!--STATUS OK--><html><head>
<meta http-equiv="X-UA-Compatible" content="IE=7">
<meta http-equiv="content-type" content="text/html;charset=uft-8">
<?php
//dl("sql_relay.so");
include "sqlr.class.php";
$config = array (
        'hostname' => '192.168.156.31',
        'username' => 'sa',
        'password' => 'sa',
        'servicename' => 'ORCL',
        'tablepre' => 'T_',
        'charset' => 'utf8',
        'type' => 'sqlr',
        'port' => 1888,
        'socket' => '',
        'retrytime' => 0,
        'trynum' => 1,
        'autoconnect' => 1,
        );
$sqlr = new sqlr();
$sqlr->open($config);
$ggg = $sqlr->select('*', 'T_APP');
//$ggg = $sqlr->select('*', 'T_NEWS_DATA');
//$ggg = $sqlr->selectA('*', 'T_NEWS_DATA', '', '1,10');
//$ggg = $sqlr->get_one('*', 'T_NEWS_DATA','ID = 57055','ID desc');
//$ggg = $sqlr->get_oneA('*', 'T_NEWS_DATA','ID = 11389');
//$ggg = $sqlr->query('select * from T_APP');
//$ggg = $sqlr->insert(array('CODE'=>'123','STATUS'=>1,'DATELINE'=>time(),'PID'=>'555','PASSWORD'=>'123456'),'T_CODE');
//$ggg = $sqlr->get_one('*', 'T_CODE','PID = 555');
//$ggg = $sqlr->update(array('CODE'=>'666','STATUS'=>0,'DATELINE'=>time(),'PID'=>'999','PASSWORD'=>'888888'),'T_CODE','PID = 555');
//$ggg = $sqlr->get_one('*', 'T_CODE','PID = 999');
//$ggg = $sqlr->delete('T_CODE','PID = 999');
//$ggg = $sqlr->select('*', 'T_CODE');

/*
$str = <<<EOT
服务条款

使 用本网站前,请您仔细阅读下述条款。如您不同意本服务条款或中国移动上海公司网站对其进行的修改,您可以主动取消中国移动上 海公司网站提供的服务;您一旦使用中国
移动上海公司网站提供的服务,即视为您已了解并完全同意本服务条款各项内容,包括中国移动上海公司网站对服务条款所 做的任何修改,并成为中国移动上海公司网站的用户(
以下简称“用户”)。
1、版权归属

中国移动通信集团上海有限公司独立拥 有中国移动上海公司网站相关网页内所有资料的版权,或与中国移动上海公司网站相关网页内的 资料提供者共同拥有该网页内资料的版权
。未经中国移动通信集团上海有限公司的明确书面许可,对于中国移动上海公司网站上的任何内容,任何人不得对其进行复 制或在非中国移动上海公司有限责任公司所属的服务器
上做镜像。
2、免责声明

(1)本网站所发布的信息中可能没有包含与中国 移动通信集团上海有限公司及其业务有关的最新信息,对于本网站所发布的信息,本 公司不声明或保证其内容之正确性或完整性
;对于用户通过本网站有关服务之广告、信息或要约而购买或取得之任何产品、信息或服务,本公司亦不承担质量保证之 责任。

(2) 中国移动通信集团上海有限公司对本网站提供的服务不提供任何明示或默示的担保或保证,包含但不限于商业适售性、特定目的之适用性及未侵害他人权利等担保或保证。

(3) 用户明确了解并同意,基于以下原因而造成的,包括但不限于利润、信誉、应用、数据损失或其他无形损失, 中国移动通信集团上海有限公司不承担任何直接、间接、附带
、特别、衍生性或惩罚性赔偿责任(即使中国移动通信集团上海有限公司事先已被告知发生此种赔偿之 可能性亦然):

(i) 本网站提供服务之使用或无法使用;

(ii) 为替换通过本网站服务购买或取得之任何商品、数据、信息、服务,或缔结的交易而发生的成本;

(iii) 您的传输或数据遭到未获授权的存取或篡改;

(iv) 任何第三方在本服务中所作之声明或行为;

(v) 与本服务相关的其他事宜,但本服务条款有明确规定的除外。

(3)本网站转载的相关文章、资料中表述或暗示的观点不代表中国移动通信集团上海有限公司的观点。

(4)本网站所提供的信息,若在某地区使用或分发时会违反该地区的法律或规定,则不得在该地区使用或分发本网站信息。

(5)本网站遵循互利互惠的原则进行内容合作。所转载的信息都已经过版权所有者的口头或书面的许可,如有遗漏,请与我们联系并提供相应的证明资料。

(6) 关于本网站下载专区第三方软件免责声明。上述声明条款同样适用在本网站下载专区第三方软件。本网站下载专区提供下载的第 三方软件由第三方公司提供,我公司对任何
包含、经由链接、下载或其它途径所获得的第三方软件,不声明或保证其正确性或可靠性,我公司不承担责任;对于使用 第三方软件获得的任何信息内容服务,不声明或保证其正
确性或可靠性,我公司不承担责任;基于技术和不可预见的原因而导致的第三方软件服务中断,或者因使用 者的非法操作而造成的损失,我公司不承担责任。
3、隐私权保护

(1)用户在匿名的状态下即可访问我们的网站并获取信息。在 本网站请求用户提供有关信息之前,本网站会解释这些信息的用途,有 些服务需要用户注册后才能够提供。在通常
情况下,这类注册只要求用户提供一个电子邮件地址和一些诸如用户的工作、职务一类的基本信息。有时本网站也会请用 户提供更多的信息,这样做是为了使本网站更好的理解用
户的需求,以便向用户提供更为有效的服务。本网站收集的信息包括姓名、地址和移动电话号码等,用户有 权随时决定不接受来自我们的任何资料。

(2)用户的注册义务 用户如希望使用本网站需注册后才能够提供的服务,应同意以下事项∶依本服务注册表之提示提供您本人真实、正确、最新及完整的资料,并随时更新登记
资料,确 保其为真实、正确、最新及完整的资料。若您提供任何错误、不实、过时或不完整或具误导性的资料,或者本网站有理由怀疑前述资料为错误、不实、过时或不完整 或
具误导性的,本网站有权暂停或终止您的帐号,并拒绝您于现在和未来使用本网站所提供服务之全部或任何部分。

(3)本网站将采取合理的安全手段保护用户已存储的个人信息,除非根据法律或政府的强制性规定,在未得到用户许可之前,本网站不会将用户的任何个人信息提供给任何无关的
第三方(包括公司或个人)。

(4)用户应了解:本网站可能会应法律之要求公开个人资料,或者因善意确信这样的作法对于下列各项有其必要性:

(i)符合法律公告或遵守适用于中国移动上海公司网站的合法程序;

(ii)保护本网站用户的权利或财产;

(iii)在紧急的情况下,为了保护本网站及其用户之个人或公众安全。
4、预测性陈述

本 网站所发布的信息中可能会包含某些预测性的陈述。这些陈述本质上具有相当风险和不确定性,对本网站所发布的有关中国移动通信 集团上海有限公司及相关业务的预测性陈
述,目的均是要指明其属预测性陈述,本公司并不打算不断地更新这些预测性陈述。此等预测性陈述反映本公司对未来事件 的目前看法,而并非关于将来业务表现的保证。
5、知识产权

本网站所载述的域名商标、文字、视像及声音内容、图形及图象均受 有关商标和著作权的法律保护。未经中国移动通信集团上海有限公 司事先以书面明确允许,任何企业或个人
不得以任何形式复制或传递。“中国移动通信”、“全球通”、“动感地带”、“神州行”和“移动梦网”等均为中国移动 通信集团公司的注册商标,受中国法律保护。
EOT;
$ggg = $sqlr->updateA('CONTENT',$str,'T_SITE_INFO','ID = 55');
$ggg = $sqlr->select("*",'T_SITE_INFO');*/

//$ggg = $sqlr->get_primary('T_APP');
//$ggg = $sqlr->get_fields('T_APP');
echo '<pre>';
var_dump($ggg[0]);
echo '</pre>';
//$con=sqlrcon_alloc("192.168.156.31",1888,"","sa","sa",0,1);
//$cur=sqlrcur_alloc($con);
//sqlrcur_prepareQuery($cur,"select name from T_app");
//sqlrcur_executeQuery($cur);
//print_R(sqlrcur_sendQuery($cur,"select name from T_app"));
//sqlrcon_endSession($con);
//for ($i=0; $i<sqlrcur_rowCount($cur); $i++)
//{
  //var_dump(sqlrcur_getRow($cur,$i));
//}
//sqlrcur_free($cur);
//sqlrcon_free($con);
?>

posted on 2012-02-16 14:44  kudosharry  阅读(392)  评论(0编辑  收藏  举报

导航