最近一直在针对php连接sqlserver方面做开发
首先讲下如何连接sqlserver,第一步我们要有sqlserver的环境,要在官网上将php的扩展Microsoft Drivers for PHP for SQL Server下载好,然后要设置一个连接数据库的类,我用的是pdo:
new PDO('odbc:Driver={SQL Server};Server=x.x.x.x;Database=dataname', root, 123456);
然后进行测试
try {
$this->pdo = new PDO($this->Config['dsn'], $this->Config['username'], $this->Config['password']);
$this->pdo->query("set names utf8");
} catch (Exception $e) {
echo '数据库连接失败,详情: ' . $e->getMessage() . ' 请在配置文件中数据库连接信息';
exit();
}
连接成功。
这里主要会遇到的问题就的环境的配置,如果环境配置好了,基本可以轻松连接上。
----------------
我们在一些数据维护中也会遇到过image类型的字符串转成图片或者是pdf,我曾经被深深苦恼着,网上找到了
- <?php
- $image = "test.jpg";
- //打开图片,b参数是为兼容windows系统
- $fp = fopen($image, "rb");
- //读取图片内容
- $content = fread($fp, filesize($image));
- //将内容字符串转为十六进制字符串
- $content = "0x".bin2hex($content);
然而并没有解决,后来发现问题出在了数据库取出的字符串比较大,不知是什么原因每255字符会出现/u000的字符,var_dump打印出来的是?的乱码。好在是有规律的页面header()定义好输出格式后调用改造了的hextobin类,然后将结果echo到页面上就可以了。
function hextobin($hexstr)
{
$n = strlen($hexstr);
$sbin="";
$i=0;
while($i<$n)
{
$a =substr($hexstr,$i,254);//跳过第255行的\u000字符的乱码
$c = pack("H*",$a);
if ($i==0){
$sbin=$c;
} else {
$sbin.=$c;
}
$i+=255;
}
return $sbin;
}