实际用了pdo_dblib扩展
命令行连接测试:
注意字符集,否则会出现乱码
如果没有中文语言呢
可以通过网上下载安装中文语言包yumgroupinstallchinese-support
修改系统默认语言
Vi/etc/sysconfig/i18n(注意改好之后重启一下系统)
修改完中文乱码问题,接着要处理sql server的uniqueidentifier类型字段问题:
php查询到此字段时,得到的结果是二进制格式:
这时网上介绍可以是用bin2hex,或join('-', unpack('H8a/H4b/H4d/H4e/H*f', $id));但得到的结果与原始内容相比,某些端顺序不对
原始记录:EA98DE18-0479-4996-A36A-2442565EEF10
PHP得到数据:18DE98EA-7904-9649-A36A-2442565EEF10
通过设置,我直接得到string类型
Laravel框架为例,修改:vendor\illuminate\database\Connectors\Connector.php文件的createPdoConnection方法
protected function createPdoConnection($dsn, $username, $password, $options)
{
if (class_exists(PDOConnection::class) && ! $this->isPersistentConnection($options)) {
return new PDOConnection($dsn, $username, $password, $options);
}
$db = new PDO($dsn, $username, $password, $options);
if(strpos($dsn,"dblib:") !== false){
$db->setAttribute(PDO::DBLIB_ATTR_STRINGIFY_UNIQUEIDENTIFIER, true);
}
return $db;//new PDO($dsn, $username, $password, $options);
}