[英]Connection to sql server 2014 with php
我正在尝试将 sql 服务器 2014 中的数据库与 php 连接,如下所示:
首先,我在 conexaosql.php 中有这个脚本:
class Conexao
{
private static $connection;
private function __construct(){}
public static function getConnection() {
$pdoConfig = DB_DRIVER . ":". "Server=" . DB_HOST . ";";
$pdoConfig .= "Database=".DB_NAME.";";
try {
if(!isset($connection)){
$connection = new PDO($pdoConfig, DB_USER, DB_PASSWORD);
$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
return $connection;
} catch (PDOException $e) {
$mensagem = "Drivers disponiveis: " . implode(",", PDO::getAvailableDrivers());
$mensagem .= "\nErro: " . $e->getMessage();
throw new Exception($mensagem);
}
}
}
然后我调用这个脚本,我有以下代码:
define('DB_HOST' , "xxxx");
define('DB_USER' , "xxxx");
define('DB_PASSWORD' , "xxxx");
define('DB_NAME' , "xxxx");
define('DB_DRIVER' , "sqlsrv");
require ("conexaosql.php");
try{
$Conexao = Conexao::getConnection();
$query = $Conexao->query("SELECT Pago FROM UTE02.dbo.Recibos");
$produtos = $query->fetchAll();
}catch(Exception $e){
echo $e->getMessage();
exit;
}
运行代码时出现以下错误:
mysql,sqlite 错误:找不到驱动程序
我正在使用 php 8.1 和 apache。我留下了来自 phpinfo() 的图像链接
我通过运行以下命令解决了我的问题:
# Microsoft ODBC 17
sudo su
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
#Download appropriate package for the OS version - Ubuntu 18.04
curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
exit
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install msodbcsql17
# optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y apt-get install mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
sudo apt-get install unixodbc-dev
# Microsoft ODBC 17
# 8.1
sudo apt-get -y install php-pear php8.1-dev
sudo update-alternatives --set php /usr/bin/php8.1
sudo update-alternatives --set phar /usr/bin/phar8.1
sudo update-alternatives --set phar.phar /usr/bin/phar.phar8.1
sudo update-alternatives --set phpize /usr/bin/phpize8.1
sudo update-alternatives --set php-config /usr/bin/php-config8.1
sudo pecl uninstall -r sqlsrv
sudo pecl uninstall -r pdo_sqlsrv
sudo pecl -d php_suffix=8.1 install sqlsrv
sudo pecl -d php_suffix=8.1 install pdo_sqlsrv
sudo su
printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/8.1/mods-available/sqlsrv.ini
printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/8.1/mods-available/pdo_sqlsrv.ini
exit
sudo phpenmod -v 8.1 sqlsrv pdo_sqlsrv
sudo service apache2 restart
您需要安装PDO_SQLSRV驱动程序才能访问数据库。 您只安装了对 MySQL 和 SQLite 的支持。
如果运行 Linux 服务器,则必须安装和使用ODBC 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.