繁体   English   中英

使用 php 连接到 sql 服务器 2014

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM