数据库表由编码latin1_swedish_ci插入到另一张UTF-8的编码的表中
2015-12-01 21:18
330 查看
由于数据库编码的改变,所以数据的插入和查看都是乱码问题,所以需要转化一下编码。
一.转化编码
PHP给我们提供了一个转化函数
iconv
iconv —字符串按要求的字符编码来转换
( string
, string
, string
)
将字符串
二.如果你的数据表数据比较多,需要设置PHP的运行时间,PHP默认的运行时间是30秒
改变PHP脚本运行时间的方法
1.在php.ini里面设置
max_execution_time=120;
2.通过PHP的ini_set函数设置
ini_set("max_execution_time","120");
3.通过set_time_limit函数设置
set_time_limit(120);
以上几个数字设置为0则无限制,默认一般是30秒.可以在脚本使用函数修改
.三.数据库插入的时候,如果是文章的话,文章里面有引号的话,需要用htmlspecialchars 函数,把里面的符号转化成HTML实体
htmlspecialchars —Convert special characters to HTML
entities
取出数据库的时候需要把实体转化为正常字符,使用htmlspecialchars_decode 函数
htmlspecialchars_decode —将特殊的 HTML 实体转换回普通字符
我的代码如下
<?php
ini_set("max_execution_time",10000);
mysql_connect('localhost','root','123456') or die('数据库连接错误');
mysql_select_db('dream') or die('数据库选择错误');
mysql_query('set names latin1');
$sql="select * from zhuanti_dream";
$rs = mysql_query($sql);
while($row = mysql_fetch_assoc($rs)){
$id=$row['id'];
//数据库中表名为titile,比title多了一个i
$title=iconv('gbk','UTF-8',$row['titile']);
$info=iconv('gbk','UTF-8',$row['info']);
$info=htmlspecialchars($info, ENT_QUOTES);
$zuozhe=iconv('gbk','UTF-8',$row['zuozhe']);
$jianjie=$row['jianjie'];
if(is_string($jianjie)){
$jianjie=iconv('gbk','UTF-8',$row['jianjie']);
}
$time=$row['time'];
$dianji=$row['dianji'];
$tuijian=$row['tuijian'];
$fenlei=$row['fenlei'];
mysql_select_db('lxxn');
mysql_query('set names utf8');
$sql="insert into shuju (id,titile,info,zuozhe,time,dianji,tuijian,fenlei)
values
(null,'$title','$info','$zuozhe','$time','$dianji','$tuijian','$fenlei')";
$a=mysql_query($sql);
//下面为测试数据是否插入成功
if($a){
echo '1','<br />';
}else{
echo $row['id'],'<br />';
echo $sql;
echo '0','<br />';
}
}
?>
一.转化编码
PHP给我们提供了一个转化函数
iconv
iconv —字符串按要求的字符编码来转换
说明
stringiconv( string
$in_charset
, string
$out_charset
, string
$str
)
将字符串
str从
in_charset转换编码到
out_charset。
二.如果你的数据表数据比较多,需要设置PHP的运行时间,PHP默认的运行时间是30秒
改变PHP脚本运行时间的方法
1.在php.ini里面设置
max_execution_time=120;
2.通过PHP的ini_set函数设置
ini_set("max_execution_time","120");
3.通过set_time_limit函数设置
set_time_limit(120);
以上几个数字设置为0则无限制,默认一般是30秒.可以在脚本使用函数修改
.三.数据库插入的时候,如果是文章的话,文章里面有引号的话,需要用htmlspecialchars 函数,把里面的符号转化成HTML实体
htmlspecialchars —Convert special characters to HTML
entities
取出数据库的时候需要把实体转化为正常字符,使用htmlspecialchars_decode 函数
htmlspecialchars_decode —将特殊的 HTML 实体转换回普通字符
我的代码如下
<?php
ini_set("max_execution_time",10000);
mysql_connect('localhost','root','123456') or die('数据库连接错误');
mysql_select_db('dream') or die('数据库选择错误');
mysql_query('set names latin1');
$sql="select * from zhuanti_dream";
$rs = mysql_query($sql);
while($row = mysql_fetch_assoc($rs)){
$id=$row['id'];
//数据库中表名为titile,比title多了一个i
$title=iconv('gbk','UTF-8',$row['titile']);
$info=iconv('gbk','UTF-8',$row['info']);
$info=htmlspecialchars($info, ENT_QUOTES);
$zuozhe=iconv('gbk','UTF-8',$row['zuozhe']);
$jianjie=$row['jianjie'];
if(is_string($jianjie)){
$jianjie=iconv('gbk','UTF-8',$row['jianjie']);
}
$time=$row['time'];
$dianji=$row['dianji'];
$tuijian=$row['tuijian'];
$fenlei=$row['fenlei'];
mysql_select_db('lxxn');
mysql_query('set names utf8');
$sql="insert into shuju (id,titile,info,zuozhe,time,dianji,tuijian,fenlei)
values
(null,'$title','$info','$zuozhe','$time','$dianji','$tuijian','$fenlei')";
$a=mysql_query($sql);
//下面为测试数据是否插入成功
if($a){
echo '1','<br />';
}else{
echo $row['id'],'<br />';
echo $sql;
echo '0','<br />';
}
}
?>
相关文章推荐
- mysql慢查询日志分析工具使用
- mysql权限角色管理
- 关于oracle中的not null约束
- Memcached
- mysql数据库备份、恢复文档
- redis的超时删除策略
- SQL Server 2005 自动化删除表分区设计方案
- Mssql常用经典SQL语句大全完整版--详解+实例
- 数据库封装
- db2数据库错误代码DB2 sqlcode=-766 sqlstate 57016 原因码 "7"错误
- Oracle 11g数据库的安装
- MySql 生成日期随机数
- 初学Oracle的一点心得
- preparedStatement 理解
- mysql语句剪辑
- B-树和B+树的应用:数据搜索和数据库索引
- 获取某月第一天,最后一天的sql server脚本
- MongoDB [入门系列] -- 1 Write Concern
- MySQL_CRUD基础语句
- ApexSql Log 2016破解版&补丁