最近很多小伙伴都在问PHP安装mssqlpdo和pdo_sqlsrv扩展这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展1、PDO:PDO简介、5.3版本php与5.5公用的pdo
最近很多小伙伴都在问PHP 安装 mssql pdo和pdo_sqlsrv扩展这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展1、PDO:PDO 简介、5.3 版本 php 与 5.5 公用的 pdo 技巧、Centos7.5 php7.2 安装 pdo_sqlsrv 连接 sql server(转)、Codeigniter PDO 错误连接注意:尝试获取非对象的属性文件名 pdo/pdo_driver.php等相关知识,下面开始了哦!
本文目录一览:- PHP 安装 mssql pdo(pdo_sqlsrv)扩展(php安装mysql)
- 1、PDO:PDO 简介
- 5.3 版本 php 与 5.5 公用的 pdo 技巧
- Centos7.5 php7.2 安装 pdo_sqlsrv 连接 sql server(转)
- Codeigniter PDO 错误连接注意:尝试获取非对象的属性文件名 pdo/pdo_driver.php
PHP 安装 mssql pdo(pdo_sqlsrv)扩展(php安装mysql)
1.添加微软源
在 https://packages.microsoft.com/config/ 找对应的源,
我这里选择debian:
curl https://packages.microsoft.com/config/debian/8/prod.list > /etc/apt/sources.list.d/microsoft.list
W: GPG error: http://security.ubuntu.com trusty-security Release: The following signatures couldn''t be verified because the public key is not available: NO_PUBKEY 40976EAF437D05B5
这个问题的解决办法:apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5
2.安装驱动
# apt-get update
# apt-get install msodbcsql mssql-tools unixodbc-dev
3.安装扩展
下载 http://pecl.php.net/package/pdo_sqlsrv
# tar -zxvf pdo_sqlsrv-5.2.0.tgz
# cd pdo_sqlsrv-5.2.0
# phpize
# ./configure
# make && make install
然后 php.ini > extension=pdo_sqlsrv.so;
-
出现错误:
undefined symbol: php_pdo_register_driver
是因为php.ini中 pdo_sqlsrv.so 和 pdo.so的加载顺序反了,pdo_sqlsrv.so应该在pdo.so之后 -
出现错误:
undefined symbol: mysqlnd_allocator
(这个是捎带说一下),和上面类似是mysqlnd 模块 和 pdo_mysql 的顺序问题,应该先加载 mysqlnd
1、PDO:PDO 简介
5.3 版本 php 与 5.5 公用的 pdo 技巧
$data_conn = array();
$data_conn[''host''] = ''host'';
$data_conn[''user''] = ''user'';
$data_conn[''passwd''] = ''pass'';
// 连接数据库
function conn_mysql($conn_array){
$dsn = ''mysql:host='' . $conn_array[''host''] . '';dbname='';
$option = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
);
if (version_compare(PHP_VERSION, ''5.3.6'', ''<'')) {
if (defined(''PDO::MYSQL_ATTR_INIT_COMMAND'')) {
$option[PDO::MYSQL_ATTR_INIT_COMMAND] = ''SET NAMES utf8'';
}
} else {
$dsn .= '';charset=utf8'';
}
$conn = [@new](https://my.oschina.net/u/121421) PDO($dsn, $conn_array[''user''], $conn_array[''passwd''], $option);
if (version_compare(PHP_VERSION, ''5.3.6'', ''<'') && !defined(''PDO::MYSQL_ATTR_INIT_COMMAND'')) {
$sql = ''SET NAMES utf8'';
$conn->exec($dw_sql);
}
return $conn;
}
$data_db = conn_mysql($data_conn);
Centos7.5 php7.2 安装 pdo_sqlsrv 连接 sql server(转)
Centos7.5 php7.2 安装 pdo_sqlsrv 连接 sql server
一、加入微软的源
curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssqlrelease.repo
二、防止冲突先卸载原有版本 (可选)
yum remove unixODBC
三、安装驱动(三个都要装上,缺一不可)
yum install msodbcsql mssql-tools unixODBC-devel
四、下载 pdo_sqlsrv 扩展包
wget http://pecl.php.net/get/pdo_sqlsrv-5.3.0.tgz
五、解压
tar -zxvf pdo_sqlsrv-5.3.0.tgz
六、进入解压目录
cd pdo_sqlsrv-5.3.0
七、执行命令
-
/usr/ local/php/bin/phpize
-
-
./configure -- with-php-config=/usr/local/php/bin/php-config
八、编译安装
make && make install
解决编译错误问题:
sudo yum install centos-release-scl
sudo yum install devtoolset-7
scl enable devtoolset-7 bash
九、更新 php.ini
修改 /usr/local/php/etc/php.ini 查找:extension = 再最后一个 extension= 后面添加上 extension = "pdo_sqlsrv.so"
十、重启 lnmp
lnmp restart
POD 连接示例:
-
define( ''MSSQL_HOST'',''111.15.25.222,6666'');
-
define( ''MSSQL_USER'',''sa'');
-
define( ''MSSQL_PASSWORD'',''password'');
-
define( ''MSSQL_DBNAME'',''demo'');
注意:端口号跟地址之间是逗号。
-
$ this->dbms = ''sqlsrv'';
-
$ this->host = MSSQL_HOST;
-
$ this->user = MSSQL_USER;
-
$ this->password = MSSQL_PASSWORD;
-
$ this->dbname = MSSQL_DBNAME;
-
$ this->dsn = "$this->dbms:Server=$this->host;Database=$this->dbname";
-
$ this->DB = new PDO($this->dsn, $this->user, $this->password);
注意:dsn 部分,跟 mysql 和 dblib 是不一样的。
大功告成。
Codeigniter PDO 错误连接注意:尝试获取非对象的属性文件名 pdo/pdo_driver.php
如何解决Codeigniter PDO 错误连接注意:尝试获取非对象的属性文件名 pdo/pdo_driver.php
我正在尝试在 pdo pgsql(第二个数据库)中插入数据,但我很清楚这个注意:试图获取非对象的属性。文件名:pdo/pdo_driver.PHP。
这是我与数据库的连接:
with open(file_path) as csv_file:
data_source = csv.reader(csv_file,delimiter='','')
with open(output_path + ''results.csv'',''w'',newline='''') as results_file:
data_sink = csv.writer(results_file) #This is the important line
for line in data_source:
data_sink.writerow(line)
在我的模型中,我有这个功能(这里只是重要的东西,不完整):
$active_group = ''default'';
$query_builder = TRUE;
$db[''pdo_email''] = array(
''hostname'' => ''pgsql:host=00.00.00.00;dbname=db_name;port=5432'',''username'' => ''user'',''password'' => ''password'',''database'' => ''db_name'',''dbdriver'' => ''pdo'',''dbprefix'' => '''',''pconnect'' => FALSE,''db_debug'' => (ENVIRONMENT !== ''production''),''cache_on'' => FALSE,''cachedir'' => '''',''char_set'' => ''utf8'',''dbcollat'' => ''utf8_general_ci'',''swap_pre'' => '''',''encrypt'' => FALSE,''compress'' => FALSE,''stricton'' => FALSE,''failover'' => array(),''save_queries'' => TRUE
);
解决方法
我使用 POSTGRES 的数据库连接设置:
$active_group = ''default'';
$query_builder = TRUE;
$db[''default''] = array(
''dsn'' => '''',''hostname'' => ''pgsql:host=localhost;dbname=Absences_DB'',''username'' => ''postgres'',''password'' => ''marc'',''database'' => ''Absences_DB'',''dbdriver'' => ''pdo'',''dbprefix'' => '''',''pconnect'' => FALSE,''db_debug'' => (ENVIRONMENT !== ''production''),''cache_on'' => FALSE,''cachedir'' => '''',''char_set'' => ''utf8'',''dbcollat'' => ''utf8_general_ci'',''swap_pre'' => '''',''encrypt'' => FALSE,''compress'' => FALSE,''stricton'' => FALSE,''failover'' => array(),''save_queries'' => TRUE
);
您应该验证是否在 php.ini 文件中启用了 pdo 驱动程序
关于PHP 安装 mssql pdo和pdo_sqlsrv扩展的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于1、PDO:PDO 简介、5.3 版本 php 与 5.5 公用的 pdo 技巧、Centos7.5 php7.2 安装 pdo_sqlsrv 连接 sql server(转)、Codeigniter PDO 错误连接注意:尝试获取非对象的属性文件名 pdo/pdo_driver.php等相关知识的信息别忘了在本站进行查找喔。
本文标签: