解决SQL server不支持utf8,php却用utf8的矛盾问题

简介:
function convert2utf8($string)
    {
        return iconv("gbk","utf-8",$string);
    }
    function convert2gbk($string)
    {
        return iconv("utf-8","gbk",$string);
    }
复制代码

当插入数据,或修改数据的时候,把utf-8,转为gbk,存入数据库。

当获取数据的时候,将数据转为utf-8。

这个方法在底层的数据中设计,上层调用即可。

复制代码
<?php

class dao_dao extends Zend_Db_Table {

    public function returnDb(){
        return $db = &$this->getAdapter();
    }

    public function getData($table,$where = false, $order = 'id ASC', $pagesize = false, $offset = false, $count = false, $from = false, $join = false, $group = false) {
        $db = &$this->getAdapter();
        $select = $db->select();
        
        if ($where && is_array($where)) {
            foreach ($where as $key => $val) {
                //print_r($where);
                if($val['type']==1){
                    $select->where($key, $val['val']);
                }else{
                    $select->orwhere($key, $val['val']);
                }
               
            } 
        }

        if (!$from)
            $from = '*';
        //echo $select."<br/>";
        if ($pagesize) {
            $select->limit($pagesize, $offset);
        }
        //echo $select."<br/>";
        if (is_array($order)) {
            foreach ($order as $value) {
                $select->order($value);
            }
        } else {
            $select->order($order);
        }
        //echo $select."<br/>";
        $select->from($table, $count ? "COUNT(".$table.".id)" : $from);
        
        if (is_array($group)) {
            foreach ($group as $key => $val) {
                $select->group($val);
            }

            if ($count) {
                $result = $db->fetchAll($select);
                //echo $select."<br/>";
                return $result;
            }
        } else {
            if ($count) {
                $result = $db->fetchOne($select);
                //echo $select."<br/>";
                return $result;
            }
        }
        if (is_array($join)) {
            foreach ($join as $key => $val) {
                $select->join($key, $val[0], $val[1]);
            }
        }

       //echo $select."<br/>";

        //echo $select;exit;
        
        $result = $db->fetchAll($select);
        foreach ($result as $key => $value) {
            foreach ($value as $key2 => $value2) {
                $result[$key][$key2] = $this->convert2utf8($value2);
            }
        }
        return $result;
    }
    
    


    /**
     * 向表中插入数据
     * array $adata  数据
     * string $table 表名
     * int $insterid 是否需要返回插入ID
     * @return true or false or int
     */
     // @bianding 2013.11.04 更改了pdo中mssql.php的lastInsertId()函数
     // @bianding 2013.11.04 经测试 mssql.php中的lastInsertId()函数中的SELECT两种方式都行
    function SaveData($adata, $table, $insterid = 0, $aLog = false) {
        $db = & $this->getAdapter();
        foreach ($adata as $key => $value) {
            $adata[$key] = $this->convert2gbk($value);
        }
        if ($db->insert($table, $adata)) {
            //var_dump($db->getProfiler());
            $insertedID = $db->lastInsertId();            
            if ($insterid) {
                return $insertedID;
            } else {
                return TRUE;
            }
        } else {
            return false;
        }
    }

    /**
     * 删除表中数据
     * 
     * @param string $table 表名
     * @param string $where 'id ='.$id 条件
     * @return true or false
     */
    function DelData($table, $where, $aLog = false) {
        $db = & $this->getAdapter();
        if ($db->delete($table, $where)) {
            return TRUE;
        } else {
            return FALSE;
        }
    }

    /**
     * 更新表中数据
     *
     * @param string $table
     * @param array $adata
     * @param string $where 'id ='.$id
     * @return true or false
     */
    function UpdateData($table, $adata, $cond, $aLog = false) {
        $db = & $this->getAdapter();
        foreach ($adata as $key => $value) {
            $adata[$key] = $this->convert2gbk($value);
        }
        if ($db->update($table, $adata, $cond)) {
            return TRUE;
        } else {
            return false;
        }
    }


    public function clearTable($table) {
        $db = &$this->getAdapter();
        $result = $db->query('TRUNCATE TABLE ' . $table);
    }

    public function executeSql($strSql) {
        $db = &$this->getAdapter();
        $result = $db->query($strSql);
    }
    
    function convert2utf8($string)
    {
        return iconv("gbk","utf-8",$string);
    }
    function convert2gbk($string)
    {
        return iconv("utf-8","gbk",$string);
    }
}


本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/p/3410584.html,如需转载请自行联系原作者
相关文章
|
SQL 数据库连接 Linux
数据库编程:在PHP环境下使用SQL Server的方法。
看看你吧,就像一个调皮的小丑鱼在一片广阔的数据库海洋中游弋,一路上吞下大小数据如同海中的珍珠。不管有多少难关,只要记住这个流程,剩下的就只是探索未知的乐趣,沉浸在这个充满挑战的数据库海洋中。
406 16
|
SQL 安全 PHP
PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全
本文深入探讨了PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全。
861 4
|
SQL PHP 数据库
20 PHP如何捕获sql错误
路老师带你深入学习PHP,掌握技术干货。本文介绍了PDO中捕获SQL错误的三种模式:默认模式、警告模式和异常模式,以及如何使用errorCode()和errorInfo()方法进行错误处理。
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
745 13
|
PHP Windows
【Azure App Service for Windows】 PHP应用出现500 : The page cannot be displayed because an internal server error has occurred. 错误
【Azure App Service for Windows】 PHP应用出现500 : The page cannot be displayed because an internal server error has occurred. 错误
343 1
|
前端开发 PHP 开发者
React Server Component 使用问题之怎么使用Docker运行PHP应用
React Server Component 使用问题之怎么使用Docker运行PHP应用
131 1
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
528 9
|
SQL 安全 API
PHP代码审计示例(一)——淡然点图标系统SQL注入漏洞审计
PHP代码审计示例(一)——淡然点图标系统SQL注入漏洞审计
433 4
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
339 6