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就出现乱码,求具体解决方法 展开
/**
* @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就出现乱码,求具体解决方法 展开
5个回答
展开全部
编码要一致。看到你在MYSQL中插入了汉字,你的代码文件编码是否GBK,不是的话要改成GBK。或用ICONV函数对你输入到数据库的数据做相应转换,使之与数据库编码一致。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
$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'");
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放在后面
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
header("Content-Type:text/html;charset=utf-8");
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询