PHP 7.2 中未定义的函数 odbc_connect()

盖兹史密斯

我收到错误

致命错误:未捕获错误:调用未定义的函数 odbc_connect()

我在 php.ini 中添加了扩展名,phpinfo() 正在确认 odbc 驱动程序存在(见截图) 在此处输入图片说明

php 脚本只是一个简单的查询

<?php

$num_minutes = 10;
ini_set('max_execution_time', (60*$num_minutes));

$conn = odbc_connect("CData Sage50UK Source","manager","password");

$query = odbc_exec($conn, "SELECT * FROM SalesOrders LIMIT 1");

while($row = odbc_fetch_array($query)){

    $json1[] = array_map('utf8_encode', $row);
}   

echo json_encode($json1);
?>
斯普德利

您提供的屏幕截图确实显示安装了 ODBC 驱动程序。但是,有问题的驱动程序不是提供这些odbc_xxx()功能的驱动程序相反,它是通过 PDO 库提供对 ODBC 的访问。

您有两个选择:

  1. 安装您需要的用于 PHP 的 ODBC 驱动程序扩展,以便访问这些odbc_xxx()函数。执行此操作的确切方法将根据您的平台而有所不同,因此我无法给出确切的说明,但您需要管理员访问服务器,因此它可能是也可能不是您的可行解决方案。

  2. 更改您的代码以使用 PDO 库而不是odbc_xxx()函数。您将需要使用如下一行代码连接到数据库:

    $db = new PDO('odbc:Server=dbIpAddr,portNumber;Database=databaseName', 'username', 'password');
    

    ...然后在整个代码中使用 PDO 方法调用来访问数据库。根据你的例子,它会是这样的:

    $stmt = $db->query("SELECT * FROM SalesOrders LIMIT 1");
    while ($row = $stmt->fetch())
    {
        $json1[] = array_map('utf8_encode', $row);
    }
    

    如果您已经编写了所有代码,这可能会很痛苦。另一方面,这样做的好处是,如果您希望这样做,您的代码将在数据库引擎之间更具可移植性。(这样做仍然需要做一些工作,因为 SQL 不是一种一致的语言,但可以这样做)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

调用未定义的函数odbc_connect()php 7

在Ubuntu中调用未定义的函数odbc_connect()

致命错误:调用未定义函数odbc_connect()

mysql_pconnect与odbc_connect(PHP)

的php:odbc_connect():SQL错误

升级到php-7后,“调用未定义的函数mysql_connect()”

PHP警告:odbc_connect():SQL错误:[unixODBC] [驱动程序管理器]无法打开lib。在PHP中与Snowflake的连接无法正常工作,但与isql的连接却正常

Docker Compose,将MySQL支持添加到PHP-FPM7。调用未定义的函数mysql_connect()

调用未定义的函数curl_init(),即使它已在php7中启用

未定义的偏移量:2(php函数)

PHP:未定义函数mysql_connect()

php错误:调用未定义函数mysql_connect()

PHP函数中的数组未定义

在PHP 7 Ubuntu 14.04上调用未定义的函数mb_strlen()

致命错误:未捕获错误:调用未定义函数ereg_replace()PHP 7

修复curl_init在Eclipse PHP IDE Windows 7中未定义?

PHP 7.4.1未捕获的错误:调用未定义函数mysqli_connect()

PHP致命错误:调用未定义函数mysql_connect()

PHP到Postgres-致命错误:调用未定义函数pg_connect()

无法使用php连接到我的SQL,未定义函数mysql_connect()

PHP mysql 错误调用未定义的函数 mysql_connect()

php从类中调用未定义的函数

PHP 警告:odbc_connect():SQL 错误:[Microsoft][ODBC Microsoft Access Driver]一般错误无法打开注册表项临时(易失性)

Symfony2:未定义函数“ ftp_ssl_connect”

从 PHP 错误上传 S3 文件:“调用未定义的函数 GuzzleHttp\Psr7\hash_init()”

PHP错误消息-未定义的变量:LINE 6中的db和致命错误:在非对象上调用成员函数connect()

注意:未定义的偏移量:2在vendor \ magento \ framework \ Encryption \ Encryptor.php中

调用未定义的函数oci_connect,php_oci8_12c.dll,Windows 8.1,php5.6.6

调用未定义的函数oci_connect,php_oci8_11g.dll,Windows 10,php5.6.24