关于php连接mssql,上传图片

最近一个项目,需要用php连接mssql。以前一直是用php连接mysql,对于php连接mssql不够了解。经过项目,总结一些经验。

1、配置php连接mssql。

    对于连接mssql2005,需要在下载微软提供的驱动。sqlsrv3.0,解压到php的目录下,然后在php.ini的目录中设置。

    [PHP_PDO_SQLSRV]
   extension=php_pdo_sqlsrv_54_nts.dll
   [PHP_SQLSRV]
   extension=php_sqlsrv_54_nts.dll

2、连接代码。

$conInfo=array('Database'=>$dbname,'UID'=>$dbuser,'PWD'=>$dbpw,'CharacterSet' => 'UTF-8');  
$link=sqlsrv_connect($dbhost,$conInfo);
if(!$this->connid = sqlsrv_connect($dbhost,$conInfo))

{

     if( ($errors = sqlsrv_errors() ) != null) {  
       print_r($error);  
     } 

}

3、取得自增长id的方法。

    $query = sqlsrv_query($this->connid,$sql) ;//or $this->halt('MsSQL Query Error', $sql)
    if( $query === false ) {
             die( print_r( sqlsrv_errors(), true));
      }
     $r=sqlsrv_query($this->connid,"SELECT @@identity as insertid;");
     $rs = $this->fetch_array($r);
     $this->insertid = $rs['insertid'];

4、上传附件,存入数据库的image字段。

      $c = file_get_contents($_FILES["file"]["tmp_name"]);
                $content = "0x";
                for ($i=0; $i<strlen($c); $i++) {
                  $h = dechex(ord($c[$i]));
                  if (strlen($h)<2) $h = '0'.$h;
                  $content .= $h;
                }
              $filetruename = $_FILES["file"]["name"];

              //将数据保存,并处理
 
              //存储图像到数据库
              $sql = "insert into aaa(id,ImgContent) values('".$ext."',".$content.")";
              $db->query($sql);

              注意,这里content不需要加单引号,ox开头,说明是二进制文件。

5、关于mssql中保存汉字失败,或者读取乱码。

    保存到数据库,提示utf16转换失败。

    在保存前,进行转码。

     $ext = iconv('utf-8', 'GB2312//IGNORE', $ext); 

     读出时,也同样进行相反的转码。

    $ext = iconv("GB2312",''utf-8//IGNORE', $ext); 

    或者,在连接数据库时,直接指明语言编码。

$conInfo=array('Database'=>$dbname,'UID'=>$dbuser,'PWD'=>$dbpw,'CharacterSet' => 'UTF-8');  
$link=sqlsrv_connect($dbhost,$conInfo);



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值