PHP插入MYSQL乱码(要使用GBK或者GB2312解决) 20

<?php/***@authorsamsun*@copyright2007*php使用ODBC连接sqlserver数据库实例*/$server='192.168.1.1... <?php

/**
* @author samsun
* @copyright 2007
* php使用ODBC连接sql server数据库实例
*/

$server='192.168.1.118';
$username='sa';
$password='sa';
$database='pg';

$connstr = "Driver={SQL Server};Server=$server;Database=$database";

if ( !odbc_connect($connstr,$username,$password,SQL_CUR_USE_ODBC)){
echo "Couldn't connect to SQL Server on $server";
}else{
echo "Connect successfully!<br>";
}
$cnx =odbc_connect($connstr,$username,$password,SQL_CUR_USE_ODBC);//'web'是sqlserver中mydb的数据源名,'admin'是访问mydb的用户名,'123456'是访问mydb的密码
$my_sql="select * from factor"; //定义sql语句
$cur= odbc_exec($cnx, $my_sql);//打开sql server中mydb数据库的user表
$num_row=0;

$link=mysql_pconnect('localhost','root','123456');
if(!$link) echo "失败!"; else echo "成功!";
mysql_query("set names 'gbk'",$link);
@mysql_select_db("test",$link)
or
die("无法连接到数据库,请与管理员联系!");//打开mysql的mydb数据库
while( odbc_fetch_row( $cur )) //从sql server的mydb库中的user表逐条取出数据,如果对数据进行选择,可在前面的select语句中加上条件判断
{
$num_row++;
echo $field2;
$field1 = odbc_result( $cur, 1 ); // 这里的参数i(1,2,3..)指的是记录集中的第i个域,你可以有所选择地进行选取,fieldi得到对应域的值,然后你可以对fieldi进行操作
$field2 = odbc_result( $cur, 2 );
//$field3 = odbc_result( $cur, 3 );
//$field4 = odbc_result( $cur, 4 );
//$field5 = odbc_result( $cur, 5 );
//$field6 = odbc_result( $cur, 6 );
//$field5 = timetoint($field5); //这里是对sql server中的datetime类型的字段进行相应转换处理,转换成我所需要的int型
$querystring = "insert into factor
(area,factor)
values('$field1','村')";
mysql_query($querystring);
}
function timetoint($str){
$arr1=split(" ",$str);
$datestr=$arr1[0];
$timestr=$arr1[1];
$arr_date=split("-",$datestr);
$arr_time=split(":",$timestr);
$year=$arr_date[0];
$month=$arr_date[1];
$day=$arr_date[2];
$hour=$arr_time[0];
$minute=$arr_time[1];
$second=$arr_time[2];
$time_int=mktime($hour,$minute,$second,$month,$day,$year);
return $time_int;
}
if(!$link) echo "失败!"; else echo "成功!"; mysql_close();
?>
程序用于SQLSERVER转移数据到MYSQL,读取SQLSERVER正常了,但是插入MYSQL就出现乱码,求具体解决方法
展开
 我来答
yingmutuohai
2012-08-04 · 超过14用户采纳过TA的回答
知道答主
回答量:66
采纳率:100%
帮助的人:52.7万
展开全部
编码要一致。看到你在MYSQL中插入了汉字,你的代码文件编码是否GBK,不是的话要改成GBK。或用ICONV函数对你输入到数据库的数据做相应转换,使之与数据库编码一致。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
司空见灌
2017-10-19 · TA获得超过673个赞
知道小有建树答主
回答量:767
采纳率:73%
帮助的人:332万
展开全部


设定字符集

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a7442358
2012-08-04 · TA获得超过561个赞
知道小有建树答主
回答量:779
采纳率:0%
帮助的人:830万
展开全部
$link=mysql_pconnect('localhost','root','123456');
if(!$link) echo "失败!"; else echo "成功!";
mysql_query("set names 'gbk'",$link);
@mysql_select_db("test",$link)
or
die("无法连接到数据库,请与管理员联系!");//打开mysql的mydb数据库

之后加一句
mysql_query("set names 'gbk'");
追问
试了都不起作用,

CREATE TABLE `factor` (
`id` int(11) NOT NULL auto_increment,
`area` varchar(12) default NULL,
`factor` mediumtext,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk COMMENT='InnoDB free: 11264 kB';
数据库的建表语句
追答
换换位置试试
mysql_select_db("test",$link);
mysql_query("set names 'gbk'",$link);
mysql_query放在后面
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lili881217
2012-08-04 · 超过32用户采纳过TA的回答
知道答主
回答量:404
采纳率:0%
帮助的人:123万
展开全部
header("Content-Type:text/html;charset=utf-8");
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qin895221725
2012-08-04
知道答主
回答量:39
采纳率:0%
帮助的人:25.5万
展开全部
改成gb2312
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式