$sql="select id,pic from htsj_fj";
$rs=mysql_query($sql,$conn);////(1)这里的是读取mysql数据库的
while($arr=mysql_fetch_array($rs))
{
$id=$arr["id"];
$pic=$arr["pic"];
$filename="./htpicup/".$pic;///(2)这里是存放的图片路径./htpicup/1234.jpg
//echo "<img src=\"$filename\">";
$fp=fopen($filename,'r');// 只读形式打开文件
$nr= fread($fp,filesize($filename));
$nr=addslashes($nr);
fclose($fp);
$sql="insert into testerjinzhi(nr,test)values('$nr','$id')";//(3)插入到mssql2005字段中,其中nr 为image 类型
$msclass->execsql($sql,$htconn);
}
插入失败:
insert into testerjinzhi(nr,test)values('\0JFIF\0\0H\0H\0\0Exif\0\0MM\0*\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0b\0\0\0\0\0\0\0j(\0\0\0\0\0\0\01\0\0\0\0\0\0\0r2\0\0\0\0\0\0\0i\0\0\0\0\0\0\0\0\0\0\0\0\0H\0\0\0\0\0\0H\0\0\0Adobe Photoshop 7.0\02012:07:20 01:12:36\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0(\0\0\0\0\0\0\0\0\0\0\0\0\0&\0\0\0\0\0\0\0\0\0\0\0\0\0H\0\0\0\0\0\0H\0\0\0\0JFIF\0\0H\0H\0\0\0 Adobe_CM\0\0Adobe\0d\0\0\0\0\0 \0\0^\0\"\0\0\0?\0\0\0\0\0\0\0\0\0\0 \0\0\0\0\0\0\0\0\0 \0 3\0!1AQa\"q2”B#$Rb34rC%S疳cs5⒉&DTdE拢t6Ue虺糜u泱F\'脑漪サ耪艴VfvΧ浦骣7GWgwХ亲琪\05\0!1AQaq\"2”B#R佯3$brCScs4%⒉&5乱DTdEU6te怛糜u泱F脑漪サ耪艴VfvΧ浦骣\'7GWgwХ\0 \0\0?\0煲I%}RI\' J[wV,S糨TX$ч涣7TXぅ傍%傍%j⑴%?M znJE4剧d\0Kw秤E+$b\0徐I%}\\+x0sv UO棹eGtfⅣI橛挎:逊 )Pk芏=乜O6/Nm\04&绞=丿Nm\04%橛挎P坠WО部o絷\0F吒%)JZ*赧糸\0F吒%SpJR绞=丿Jm;+俚逐#嗽6冽VW%J64鸯I%}]G袤U0区 ->^4-p.浞!nKr\\*K-[ 敢nL^\\\\RW\"\\36[VW*Io[\\i++G异I%}]:-LxyQsw=翘~@D4_#OG7EoN臊~辂_i~KJ,H喻疽?t7G哺wH喻疽?t7G哺wH喻i^Uqd睿样э?$Ye抟 3O[[#t.................cs~GG\0ё','1')
msexec:[Microsoft][ODBC SQL Server Driver]语法错误或违反访问规则
思路:
我想把mysql数据库中的图片路径,转换为二进制后,插入到mssql2005的image字段中
php程序编码是utf-8
mysql编码也是utf8的mssql2005的应该是gbk或者是gb2312的
$rs=mysql_query($sql,$conn);////(1)这里的是读取mysql数据库的
while($arr=mysql_fetch_array($rs))
{
$id=$arr["id"];
$pic=$arr["pic"];
$filename="./htpicup/".$pic;///(2)这里是存放的图片路径./htpicup/1234.jpg
//echo "<img src=\"$filename\">";
$fp=fopen($filename,'r');// 只读形式打开文件
$nr= fread($fp,filesize($filename));
$nr=addslashes($nr);
fclose($fp);
$sql="insert into testerjinzhi(nr,test)values('$nr','$id')";//(3)插入到mssql2005字段中,其中nr 为image 类型
$msclass->execsql($sql,$htconn);
}
插入失败:
insert into testerjinzhi(nr,test)values('\0JFIF\0\0H\0H\0\0Exif\0\0MM\0*\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0b\0\0\0\0\0\0\0j(\0\0\0\0\0\0\01\0\0\0\0\0\0\0r2\0\0\0\0\0\0\0i\0\0\0\0\0\0\0\0\0\0\0\0\0H\0\0\0\0\0\0H\0\0\0Adobe Photoshop 7.0\02012:07:20 01:12:36\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0(\0\0\0\0\0\0\0\0\0\0\0\0\0&\0\0\0\0\0\0\0\0\0\0\0\0\0H\0\0\0\0\0\0H\0\0\0\0JFIF\0\0H\0H\0\0\0 Adobe_CM\0\0Adobe\0d\0\0\0\0\0 \0\0^\0\"\0\0\0?\0\0\0\0\0\0\0\0\0\0 \0\0\0\0\0\0\0\0\0 \0 3\0!1AQa\"q2”B#$Rb34rC%S疳cs5⒉&DTdE拢t6Ue虺糜u泱F\'脑漪サ耪艴VfvΧ浦骣7GWgwХ亲琪\05\0!1AQaq\"2”B#R佯3$brCScs4%⒉&5乱DTdEU6te怛糜u泱F脑漪サ耪艴VfvΧ浦骣\'7GWgwХ\0 \0\0?\0煲I%}RI\' J[wV,S糨TX$ч涣7TXぅ傍%傍%j⑴%?M znJE4剧d\0Kw秤E+$b\0徐I%}\\+x0sv UO棹eGtfⅣI橛挎:逊 )Pk芏=乜O6/Nm\04&绞=丿Nm\04%橛挎P坠WО部o絷\0F吒%)JZ*赧糸\0F吒%SpJR绞=丿Jm;+俚逐#嗽6冽VW%J64鸯I%}]G袤U0区 ->^4-p.浞!nKr\\*K-[ 敢nL^\\\\RW\"\\36[VW*Io[\\i++G异I%}]:-LxyQsw=翘~@D4_#OG7EoN臊~辂_i~KJ,H喻疽?t7G哺wH喻疽?t7G哺wH喻i^Uqd睿样э?$Ye抟 3O[[#t.................cs~GG\0ё','1')
msexec:[Microsoft][ODBC SQL Server Driver]语法错误或违反访问规则
思路:
我想把mysql数据库中的图片路径,转换为二进制后,插入到mssql2005的image字段中
php程序编码是utf-8
mysql编码也是utf8的mssql2005的应该是gbk或者是gb2312的
但你存在 2 个问题:
1、应用二进制方式打开文件
$fp=fopen($filename,'rb');// 只读形式打开文件
2、mssql 中“'”应转义为“''”
/////$replacenums=array("'"=>"''");
$rs=mysql_query($sql,$conn);
while($arr=mysql_fetch_array($rs))
{
$id=$arr["id"];
$pic=$arr["pic"];
$filename="./htpicup/".$pic;
$fp=fopen($filename,'rb');// 只读形式打开文件
$nr= fread($fp,filesize($filename));
//$nr=strtr($nr,$replacenums);
$nr=iconv("UTF-8","gbk",$nr) ;
//$nr=addslashes($nr);
fclose($fp);
$sql="insert into testerjinzhi(nr,test)values('$nr','$id')";
$msclass->execsql($sql,$htconn);
}我这样插入进去了,但是在读取mssql字段出来的时候array
'id' => string '13' (length=2)
'nr' => string '' (length=0)--------------------------------------------------------------------------------
nr字段是空的了
$replacenums=array("'"=>"''");
$rs=mysql_query($sql,$conn);
while($arr=mysql_fetch_array($rs))
{
$id=$arr["id"];
$pic=$arr["pic"];
$filename="./htpicup/".$pic;
$fp=fopen($filename,'rb');// 只读形式打开文件
$nr= fread($fp,filesize($filename));
$nr=strtr($nr,$replacenums);
//$nr=iconv("UTF-8","gbk",$nr) ;
//$nr=addslashes($nr);
fclose($fp);
$sql="insert into testerjinzhi(nr,test)values('$nr','$id')";
$msclass->execsql($sql,$htconn);
}这样的话,就报错,插入不进去了msexec:[Microsoft][ODBC SQL Server Driver][SQL Server]字符串 '?' 后的引号不完整。
$nr = str_replace("'", "''", $nr);
$replacenums=array("'"=>"''");
$rs=mysql_query($sql,$conn);///读取mysql 表中的图片
while($arr=mysql_fetch_array($rs))
{
$id=$arr["id"];
$pic=$arr["pic"];
$filename="./htpicup/".$pic;///图片路径 ./htpicup/1234.jpg
$fp=fopen($filename,'rb');// 只读形式打开文件
$nr= fread($fp,filesize($filename));
$nr = str_replace("'", "''", $nr);
//$nr=addslashes($nr);
fclose($fp);
$sql="insert into testerjinzhi(nr,test)values('$nr','$id')";
execsql($sql,$htconn);///插入mssql2005表中
}
还是插入不进去,说是
[Microsoft][ODBC SQL Server Driver][SQL Server]字符串 '?' 后的引号不完整。
慴''!Y竑` 这样的地方有一些个。
说是发表于 2008-10-25 23:55:21 |只看该作者 说了半天.我给你的答复就是:
不能用二进制直接写入MSSQL而且要用HEX写入,所以在前面加上0x 原帖地址:http://bbs.phpchina.com/thread-86521-1-1.html
------------------------------------------------我看别人帖子有这么说的,这个是什么意思 ?