gpt4 book ai didi

php - 通过 PHP、SQL STATE IM004、驱动程序在 SQL_HANDLE_ENV 上的 SQLAllocHandle 与 SQL Server 的连接错误

转载 作者:可可西里 更新时间:2023-11-01 10:32:24 25 4
gpt4 key购买 nike

我已经对我的问题进行了搜索和谷歌搜索,但我仍然没有找到答案。我的问题是当通过 PHP PDO/ODBC 连接连接到我的 SQL Server 数据库时,我总是收到错误消息:“[Microsoft][ODBC Driver Manager] SQL_HANDLE_ENV 上的驱动程序 SQLAllocHandle 失败,SQLConnect 中的 SQL 状态 IM004” .但是我与 Oracle 或 MySQL 数据库的连接完全没有问题,只有 SQL Server 数据库。

这是我测试连接的代码:

$dbh = null;
try
{
$dbh = new PDO('oci:dbname='.TNS, DB_USERNAME, DB_PASSWORD, null);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $pe) {
//var_dump($pe->getMessage());
}

if (!is_null($dbh)) {
echo "Oracle Connection success";
}
else {
echo "Oracle cannot connect";
}
echo "<br />";



$dbh = null;
try
{
$dbh = new PDO('mysql:host=localhost;dbname=db_test', 'root', '', null);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $pe) {
//var_dump($pe->getMessage());
}

if (!is_null($dbh)) {
echo "MySQL Connection success";
}
else {
echo "MySQL cannot connect";
}
echo "<br />";



$dbh = null;
try
{
$dbh = new PDO('sqlsrv:server=XXXXX;Database=xxxxxxx', 'xxxx', 'xxxx', null);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $pe) {
//var_dump($pe->getMessage());
}

if (!is_null($dbh)) {
echo "MySQL Connection success";
}
else {
echo "SQL Server cannot connect";
}

上面的结果显示为:

  • Oracle 连接成功
  • MySQL连接成功
  • SQL Server 无法连接

我已尝试重新安装 XAMPP 并复制新的 PHP 的 SQL Server 库。但是错误还是一样。正如我上面提到的,我一直在寻找解决方案,但仍然没有运气。我真的希望,我能为我的问题找到解决方案,或者至少给我一个开始的线索。哦对了,我差点忘了,这个错误发生在Windows 10更新之后,在此之前,我与SQL Server的连接是好的。所以,我想知道这个问题是否与 Windows 更新有关。我真的不知道。

抱歉我的英语不好,非常感谢您的帮助。我真的很感激任何答案

最佳答案

我遇到了同样的问题,这些是我为确保它正常工作而采取的步骤:

我的配置(Win10、XAMPP、PHP 7.2.8)

1) 下载 Microsoft PHP Drivers for SQL Server 5.3 并将以下文件放入 C:\xampp\php\ext 目录:

  • php_sqlsrv_72_ts_x86.dll
  • php_pdo_sqlsrv_72_ts_x86.dll

2) 在 c:\xampp\php 中的 php.ini 文件中添加了以下行

  1. extension=php_pdo.dll
  2. extension=php_sqlsrv_72_ts_x86.dll
  3. extension=php_pdo_sqlsrv_72_ts_x86.dll

注意:我最初遗漏了第一行 (extension=php_pdo.dll),这给了我一个“Driver's SQLAllocHandle on SQL_HANDLE_ENV failed”错误。您不需要将 dll 放在 ext 目录中,因为在 PHP 7 中它是内置的,但您需要将行放在 ini 文件中。

3) 下载并安装了适用于 SQL Server 17 的 Microsoft ODBC 驱动程序。

确保在进行更改后停止并重新启动 Apache 服务器。

关于php - 通过 PHP、SQL STATE IM004、驱动程序在 SQL_HANDLE_ENV 上的 SQLAllocHandle 与 SQL Server 的连接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48742854/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com