用于Windows的PHP 7.0 ODBC驱动程序

use*_*480 4 php windows sql-server odbc php-7

我将PHP 5.6.30(https://www.apachefriends.org/de/download.html)升级到PHP 7.0(https://bitnami.com/stack/wamp/installer)

到目前为止,一切都运行良好,当我使用MySQL数据库时,它将我的页面的加载时间从1,2秒减少到约300毫秒.但是现在我正在尝试使用以下简单脚本连接到MSSQL数据库,这对我的旧安装(PHP 5.6)工作正常:

<?php
    //Use the machine name and instance if multiple instances are used
    $server = 'Server-Adress';
    $user = '';
    $pass = '';
    //Define Port
    $port='Port=1433';
    $database = 'Databasename';

    $connection_string = "DRIVER={SQL Server};SERVER=$server;$port;DATABASE=$database";
    $conn = odbc_connect($connection_string,$user,$pass);
    if ($conn) {
        echo "Connection established.";
    } else{
        die("Connection could not be established.");
    }

    $sql = "SELECT * FROM st3_200 WHERE identifier = 1";

    $result = odbc_exec($conn,$sql);
    // Get Data From Result
      while ($data[] = odbc_fetch_array($result));

      // Free Result
      odbc_free_result($result);

      // Close Connection
      odbc_close($conn);

      // Show data
      print_r($data);

?>
Run Code Online (Sandbox Code Playgroud)

但是现在我的日志中出现了一个错误:

[Thu Dec 10 11:55:26.629956 2015] [:error] [pid 260:tid 968] [client :: 1:63003] PHP致命错误:未捕获错误:在C:\ Bitnami \中调用未定义的函数odbc_connect() wampstack-7.0.0-0\apache2\htdocs\test\query.php:11 \n堆栈跟踪:\n#0 {main} \n在C:\ Bitnami\wampstack-7.0.0-0\apache2\htdocs中抛出第11行的\ test\query.php

首先我想,我的php.ini有一个缺少的扩展名,所以我启用了"extension = php_pdo_odbc.dll"

与5.6版本中的php.ini的区别在于有扩展名:"extension = php_mssql.dll"已启用.但我无法在新的PHP 7.0.ini中找到它们

所以我的意图是没有odbc和PHP 7的现有驱动程序了吗?我在这里找到了一些Linux驱动程序:https: //aur.archlinux.org/packages/php7-odbc/

但是我的Windows环境需要一些东西.

有没有人有同样的问题,并已修复它?

感谢和问候Domi

小智 10

看看你的php.ini,字符串

extension=php_odbc.dll
Run Code Online (Sandbox Code Playgroud)

似乎在新安装中缺少,至少我不得不在我的新XAMPP安装(7.0.1)中手动添加它,并且意外地只是激活了pdo_odbc.dll


Tim*_*ner 5

PHP7在默认情况下,有几个默认禁用的模块PHP5

不过,此扩展很容易,因为扩展名应该已经在\ext\随附的文件夹中PHP7。您只需要修改php.ini文件以包含以下行:

extension=php_odbc.dll
Run Code Online (Sandbox Code Playgroud)

上面的线是已经存在和注释; 您实际上需要添加它!

PHP在其中查找php.ini文件,C:\Windows\但它也可能位于您计算机上的其他位置。因此,请同时检查C:\Windows\C:\php\或在其他任何地方安装PHP。

进行更改后,您可以像下面这样从命令行检查结果:

C:\php\php.exe -m
Run Code Online (Sandbox Code Playgroud)

或(在重新启动Web服务器/机器之后)来自如下.phtml文件:

<? phpinfo(); ?>
Run Code Online (Sandbox Code Playgroud)

这将输出已启用模块的列表,现在应包括odbc;如果不是,则可能是您修改了错误的php.ini文件(继续查看)或忘记了重新启动Web服务器/计算机。


提示:

如果您使用的是非标准安装,则可以使用如下所示的绝对路径:

extension=C:\php7x64\ext\php_odbc.dll
Run Code Online (Sandbox Code Playgroud)


Nik*_*tov 0

我想你是对的,你需要为你的 PHP 客户端平台和操作系统下载 SQL Server ODBC 驱动程序
以下是类似问题的链接:Call to undefined function odbc_connect()

您也可以尝试为 MySQL 安装此连接器(如果您使用 MySQL):Connector/ODBC

或者如果您使用 MSSQL:ODBC Driver 11 for SQL Server