php取MYSQL数据库中的中文数据时乱码

 更新时间:2016年11月25日 16:07  点击:1845

在网上找了一些资料,都是一堆费话,实现就下面一句就可以了.其它方法目前不知道.

$charset=''gbd'';

$conn=数据库链接;

@mysql_query("SET NAMES ".$charset."",$conn);  



< 1. 使用 ip2long() 和 long2ip() 以整型(integer)方式储存IP地址到数据库,而非字符串方式。这将几乎减少一半的储存空间(char(15)15个字节,integer则是8个字节),而且也更容易计算某一IP地址是否在一个范围之内。同时也加速搜索和排序。

2. 应用checkdnsrr()检查域名是否存在,来验证email地址的一部分。这个checkdnsrr()内建函数可以通过相应的域名或者IP地址查询DNS记录。有PHP开发者利用这个函数编写了一个自定义函数,能验证email地址的一部分,点击查看。请注意,此函数在windows平台尚未实现!请用 PEAR 程序库的 Net_DNS 代替。

3. 如果你使用PHP 5 + MySQL 4.1 版本组合或其版本以上,得试试改进的 mysqli_* 函数,而不用 mysql_* 函数。mysqli_* 函数的一个优越的特点是可以使用 prepared 语句。如果你维护一个对数据库依赖性很大的网站,这个函数将大大提升数据库的查询速度。不信你可以看看这篇性能测试文章—MySQLi vs MySQL。最终结果是 mysqli_stmt > mysql_query > mysqli_query > mysqli_multi_query 。mysqli_stmt最佳。

4. 学会、爱用三元操作符( ternary operator )。也就是if/else条件语句的代替,用 “?:” 表示。

5. 不必重造车轮,先看看PEAR 程序库有没有人已经发明这个轮子了。

6. highlight_file()能格式化你的代码,美观漂亮。

7. 使用 error_reporting(0) 函数,阻止潜在的敏感错误信息显示给用户。最好的情况是能在服务器上配置php.ini文件,直接屏蔽错误报告的显示。但是如果使用虚拟主机就没那么幸运能够编辑修改php.ini文件了,得使用另外的方法:在php代码首行添加error_reporting(0); 语句。这样的好处是使得SQL查询语句和服务器的物理路径等这些敏感错误信息完全不显示给用户。

8. 大量字符串文本储存入数据库之前,使用 gzcompress() 和 gzuncompress() 进行压缩和解压缩的转换。这个内建函数使用gzip算法,对文本的压缩率达90%以上。当然,经过压缩就无法进行全文搜索了。

9. 在函数的参数传递中使用”引用传递”,可以返回多个值。有编程语言基础的程序员在其它语言就知道这个用法了;然而一些只会html语言的网页设计者就感到困惑了。答案就是使用 “&” 符号处理变量,并以引用传递而非按值传递。

<
工作任务:FTP模块工作计划


相关文件

  1、表 pureftpd

  2、模块目录ftp,mod/ftp

 

     

 

 

功能需求

  3、能够批量上传文件

  4、删除目录
----------------------

  1、统计空间的大小,统计的缓存在.ftpquota,格式:文件数量,目录容量

  2、增加ftp,控件 的容量

  3、关闭ftp,mv /file/webroot/91.tc/p/pa/paladin /file/webroot/91.tc/p/pa/paladin.close

  4、删除ftp文件

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

写入FLASH的FTP上传控件:

        <table width="90%" border="0" align="center" cellpadding="0" cellspacing="0">
        <tr>
          <td height=26 class=font1><strong>图片上传</strong><font color="#FF0000">(可一次性上传1-8张,格式为jpggifpng,大小限制为1M,标题为空时取图片文件名)</font></td>
        </tr>
      </table>
   
   <table width="100%" border="0" cellspacing="0" cellpadding="0" align="center">
   <tr>
            <td class="font1" align="center">
    <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="470" height="350">
        <param name="movie" value="image/upload.swf?

< 代码实现了一个简单的多进程管理机制,比向WEB服务器发送多个请求要实现多进程要方便很多。只能使用在cli模式。可以用在特殊场合,如邮件发送任务等。
资源的共享访问使用了文件锁,并不是很可靠,主要是为了能够在Windwos下使用,如果确实有必要可以考虑自己改用相应的信号灯机制(这个扩展只能用于xUNIX)。

实例
复制PHP内容到剪贴板
PHP代码:
define(''DIR_PHP_EXEC''''php'');
define(''DIR_MAIN_EXEC''__FILE__
);
define(''DIR_TMP''''/tmp''
);
require_once(
''my_process.php''
);

class 
pp extends my_process_base 
{
    public function 
run($param /* 文件上传类 */
class Upload
{
    
public $InputName;    // 文件上传域控件名
    
    
/**  
    * 允许上传的文件类型
    * 形式为 array(''image/jpeg'', ''image/png'', ''image/gif'') 或包含此类数组的数组(与每个上传域控件对应)
    
*/
    
public $FileType;
    
    
/**  
    * 最大上传文件大小(单位:byte)
    * 形式为 array(''image'' => $size, ''audio'' => $size)(表示每种应用文件类型所对应的上传大小) 或包含此类数组的数组(与每个上传域控件对应)或一数值(表示所有上传文件均限制在此大小之下)
    
*/
    
public $FileMaxSize
    
    
public $FileSavePath;  // 文件保存路径(可为数组形式,表示不同上传域上传文件到不同的路径)
    public $FileSaveName;  // 文件保存名(不包含后缀名)(可为数组形式,表示不同上传域上传文件保存的不同名称)
    public $NoteFileFalse// 文件错误提示
    public $NoteFileType;  // 文件类型不符提示
    public $NoteFileSize;  // 文件大小超出提示
    
    
/* 上传文件并返回文件名信息(包含后缀名) */
    
public function UploadFile()
    {
        
$this->CheckFile(); // 检验文件
        $file = $_FILES[$this->InputName];
        
$file_number = count($file[''name'']); // 要上传的文件数
        $file_save_full_name = array(); // 文件保存名(包含后缀名)
        
        
for ($i = 0$i < $file_number$i++)
        {
            
$name = $file[''name''][$i];
            
            
if (!empty($name)) // 文件不为空
            {
                
/* 确定文件保存路径 */
                
if (is_array($this->FileSavePath))
                {
                    
$file_save_path = $this->FileSavePath[$i];
                }
                
else 
                {
                    
$file_save_path = $this->FileSavePath;
                }
                
                
/* 确定文件保存名(不包含后缀名) */
                
if (is_array($this->FileSaveName))
                {
                    
$file_save_name = $this->FileSaveName[$i];
                }
                
else 
                {
                    
$file_save_name = $this->FileSaveName;
                }
                
                
/* 开始保存 */
                
$this->CreatePath($file_save_path); // 如果路径不存在则创建路径
                if (!move_uploaded_file($file["tmp_name"][$i], $file_save_path . $file_save_name . $this->GetSuffix($file[''name''][$i])))
                {
                    
die($name . ''文件上传失败'');
                }
                
else 
                {
                    
$file_save_full_name[] = $file_save_name . $this->GetSuffix($file[''name''][$i]);
                }
            }
            
else 
            {
                
$file_save_full_name[] = null;
            }
        }
        
        
unlink($file);
        
        
/* 如果只有一个文件,则返回单个文件名 */
        
if (count($file_save_full_name== 1)
        {
            
$file_save_full_name = $file_save_full_name[0];
        }
        
        
return $file_save_full_name;
    }
    
    
/* 检验文件 */
    
private function CheckFile()
    {
        
$file = $_FILES[$this->InputName];
        
$file_number = count($file[''name'']); // 要上传的文件数
        
        
for ($i = 0$i < $file_number$i++)
        {
            
if (!empty($file[''name''][$i])) // 文件不为空
            {
                
$name  = $file[''name''][$i];
                
$type  = $file[''type''][$i];
                
$size  = $file[''size''][$i];
                
$error = $file[''error''][$i];
                
                
/* 确定允许上传文件类型列表 */
                
if (is_array($this->FileType[0]))
                {
                    
$file_type = $this->FileType[$i];
                }
                
else 
                {
                    
$file_type = $this->FileType;
                }
                
                
/* 确定最大上传文件大小 */
                
if (is_array($this->FileMaxSize))
                {
                    
$file_max_size_key = explode(''/'', $type);
                    
$file_max_size_key = $file_max_size_key[0];
                    
if (is_array($this->FileMaxSize[0]))
                    {
                        
$file_max_size = $this->FileMaxSize[$i][$file_max_size_key];
                    }
                    
else 
                    {
                        
$file_max_size = $this->FileMaxSize[$file_max_size_key];
                    }
                }
                
else 
                {
                    
$file_max_size = $this->FileMaxSize;
                }
                
                
/* 文件错误 */
                
if ($error > 0)
                {
                    
die($name . $this->NoteFileFalse);
                }
                
                
/* 文件类型不符 */
                
if (!in_array($type, $file_type))
                {
                    
die($name . $this->NoteFileType);
                }
                
                
/* 文件大小超过最大上传文件大小 */
                
if (!is_null($file_max_size&& $size > $file_max_size)
                {
                    
die($name . $this->NoteFileSize);
                }
            }
        }
    }
    
    
/* 获取文件后缀名 */
    
private function GetSuffix($fileName)
    {
        
return substr($fileName, strrpos($fileName, "."));
    }

    
/* 如果路径不存在则创建路径 */
    
private function CreatePath($filePath)
    {
        
if (!file_exists($filePath))
        {
            
mkdir($filePath);
        }
    }
}


使用方法:接着以本文开头所举例子来说明该类的调用方法(呵呵,调用是很方便的):
$upload_obj = new Upload(); // 文件上传对象
$upload_obj->InputName = ''upload_test''; // 文件上传域控件名
$upload_obj->FileType = array(array(''image/jpeg'', ''image/png''), array(''audio/mpeg'', ''video/x-msvideo'')); // 允许上传的文件类型
$upload_obj->FileMaxSize = array(''image'' => 100 * 1024, ''audio'' => 2 * 1024 * 1024, ''video'' => 2 * 1024 * 1024);
$upload_obj->FileSavePath = array(''upload/files/s/'', ''upload/files/z/'');
$upload_obj->FileSaveName = time();
$upload_obj->NoteFileFalse = ''文件错误'';
$upload_obj->NoteFileType  = ''文件类型不符'';
$upload_obj->NoteFileSize  = ''文件大小超出'';
$file_save_full_name = $upload_obj->UploadFile(); // 上传并获取文件全名(基本名加扩展名)(如果是多个文件则为数组形式)(全名用于在数据库中存储信息)

总结:就此可轻松实现若干文件上传,其实归根结底用到了PHP组文件上传,要注意的就是控件名的name后别忘了加上[],这样的好处就是遇到多个文件上传时就不用在调用层进行循环或一个一个处理上传了,我们的应用也因此而轻松。

[!--infotagslink--]

相关文章

  • js URLdecode()与urlencode方法支持中文解码

    下面来介绍在js中来利用urlencode对中文编码与接受到数据后利用URLdecode()对编码进行解码,有需要学习的机友可参考参考。 代码如下 复制代码 ...2016-09-20
  • PHP 数据库缓存Memcache操作类

    操作类就是把一些常用的一系列的数据库或相关操作写在一个类中,这样调用时我们只要调用类文件,如果要执行相关操作就直接调用类文件中的方法函数就可以实现了,下面整理了...2016-11-25
  • C#连接SQL数据库和查询数据功能的操作技巧

    本文给大家分享C#连接SQL数据库和查询数据功能的操作技巧,本文通过图文并茂的形式给大家介绍的非常详细,需要的朋友参考下吧...2021-05-17
  • C#从数据库读取图片并保存的两种方法

    这篇文章主要介绍了C#从数据库读取图片并保存的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...2021-01-16
  • Intellij IDEA连接Navicat数据库的方法

    这篇文章主要介绍了Intellij IDEA连接Navicat数据库的方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借价值,需要的朋友可以参考下...2021-03-25
  • 在数据库里将毫秒转换成date格式的方法

    在开发过程中,我们经常会将日期时间的毫秒数存放到数据库,但是它对应的时间看起来就十分不方便,我们可以使用一些函数将毫秒转换成date格式。 一、 在MySQL中,有内置的函数from_unixtime()来做相应的转换,使用如下: 复制...2014-05-31
  • C#操作本地文件及保存文件到数据库的基本方法总结

    C#使用System.IO中的文件操作方法在Windows系统中处理本地文件相当顺手,这里我们还总结了在Oracle中保存文件的方法,嗯,接下来就来看看整理的C#操作本地文件及保存文件到数据库的基本方法总结...2020-06-25
  • 如何解决局域网内mysql数据库连接慢

    通过内网连另外一台机器的mysql服务, 确发现速度N慢! 等了大约几十秒才等到提示输入密码。 但是ping mysql所在服务器却很快! 想到很久之前有过类似的经验, telnet等一些服务在连接请求的时候,会做一些反向域名解析(如果...2015-10-21
  • MySQL快速复制数据库数据表的方法

    某些时候,例如为了搭建一个测试环境,或者克隆一个网站,需要复制一个已存在的mysql数据库。使用以下方法,可以非常简单地实现。假设已经存在的数据库名字叫db1,想要复制一份,命名为newdb。步骤如下:1. 首先创建新的数据库newd...2015-10-21
  • mysqldump命令导入导出数据库方法与实例汇总

    mysqldump命令的用法1、导出所有库系统命令行mysqldump -uusername -ppassword --all-databases > all.sql 2、导入所有库mysql命令行mysql>source all.sql; 3、导出某些库系统命令行mysqldump -uusername -ppassword...2015-10-21
  • Mysql数据库错误代码中文详细说明

    1005:创建表失败1006:创建数据库失败1007:数据库已存在,创建数据库失败1008:数据库不存在,删除数据库失败1009:不能删除数据库文件导致删除数据库失败1010:不能删除数据目录导致删除数据库失败1011:删除数据库...2013-09-23
  • 关于Mysql中文乱码问题该如何解决(乱码问题完美解决方案)

    最近两天做项目总是被乱码问题困扰着,这不刚把mysql中文乱码问题解决了,下面小编把我的解决方案分享给大家,供大家参考,也方便以后自己查阅。首先:用show variables like “%colla%”;show varables like “%char%”;这两条...2015-11-24
  • C#读取中文文件出现乱码的解决方法

    这篇文章主要介绍了C#读取中文文件出现乱码的解决方法,涉及C#中文编码的操作技巧,非常具有实用价值,需要的朋友可以参考下...2020-06-25
  • c#异步读取数据库与异步更新ui的代码实现

    这篇文章主要介绍了c#从数据库里取得数据并异步更新ui的方法,大家参考使用吧...2020-06-25
  • Mysql在debian系统中不能插入中文的终极解决方案

    在debian环境下,彻底解决mysql无法插入和显示中文的问题Linux下Mysql插入中文显示乱码解决方案mysql -uroot -p 回车输入密码进入mysql查看状态如下:默认的是客户端和服务器都用了latin1,所以会乱码。解决方案:mysql>use...2013-10-04
  • linux mint 下mysql中文支持问题

    一.mysql默认不支持中文,它的server和db默认是latin1编码.所以我们要将其改变为utf-8编码,因为utf-8包含了地球上大部分语言的二进制编码 1.关闭mysql服务 sudo /etc/init.d/mysql stop 2.修改mysql配置文件 mysql配...2015-10-21
  • Windows服务器MySQL中文乱码的解决方法

    我们自己鼓捣mysql时,总免不了会遇到这个问题:插入中文字符出现乱码,虽然这是运维先给配好的环境,但是在自己机子上玩的时候咧,总得知道个一二吧,不然以后如何优雅的吹牛B。...2015-03-15
  • php怎么用拼音 简单的php中文转拼音的实现代码

    小编分享了一段简单的php中文转拼音的实现代码,代码简单易懂,适合初学php的同学参考学习。 代码如下 复制代码 <?phpfunction Pinyin($_String...2017-07-06
  • Yii2.0高级框架数据库增删改查的一些操作

    yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2使用中的一些基本的增删改查操作。 User::find()->all(); //返回所有用户数据; User::findOne($id); //返回 主键...2015-11-24
  • springBoot 项目排除数据库启动方式

    这篇文章主要介绍了springBoot 项目排除数据库启动方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-10