【问题标题】:WAMP localhost install SQLSRV for connecting to databaseWAMP localhost 安装 SQLSRV 以连接到数据库
【发布时间】:2019-09-16 13:52:47
【问题描述】:

我正在使用 WAMP 在本地运行我的代码。
现在我想使用 PHP 连接到 Microsoft SQL Server 数据库。

// connection with callstats DB
$serverName = "IP, 1433"; //serverName\instanceName, portNumber (default is 1433)
$connectionInfo = array( "Database"=>"CDR", "UID"=>"username", "PWD"=>"password");

我正在使用:

$conn_CDR = sqlsrv_connect( $serverName, $connectionInfo);
$params = array();

然后进行查询:

$result = sqlsrv_query($conn_CDR, "", $params);

然后我得到这个错误:

警告:sqlsrv_query() 期望参数 1 是资源,给定的布尔值

现在我知道我需要将 sqlsrv 安装到我的本地主机中。
我正在使用PHP 7.2.14,所以我将php_sqlsrv_72_ts.dll 安装到我的C:\localhost\bin\php\php7.2.14
我也将此行添加到我的php.ini

extension=php_sqlsrv_72_ts.dll

然后我重新启动了我的 WAMPserver,并再次运行了我的代码,但仍然得到相同的结果。
我也尝试将文件添加到C:\localhost\bin\apache\apache2.4.37\bin但也没有成功。
有谁知道为什么这个错误不断发生以及如何解决它?

【问题讨论】:

  • 你能展示你如何创建 $serverName 和 $connectionInfo - 你可以匿名数据
  • 添加了我的 $connectioninfo
  • @Jbadminton 请在sqlsrv_connect() 之后执行if ($conn_CDR === false) {echo "Error (sqlsrv_connect): ".print_r(sqlsrv_errors(), true);}; 并发布错误。可能sqlsrv_connect() 失败了。谢谢。
  • 错误 (sqlsrv_connect): Array ([0] => Array ([0] => IMSSP [SQLSTATE] => IMSSP [1] => -49 [code] => -49 [2 ] => 此扩展需要 Microsoft ODBC Driver for SQL Server。访问以下 URL 以下载适用于 x64 的 SQL Server ODBC 驱动程序:go.microsoft.com/fwlink/?LinkId=163712 [message] => 此扩展需要 Microsoft ODBC Driver for SQL Server。访问以下 URL 下载适用于 x64 的 SQL Server 的 ODBC 驱动程序:go.microsoft.com/fwlink/?LinkId=163712)
  • @Jbadminton 您需要下载并安装 ODBC 驱动程序。 SQL Server 的 PHP 驱动程序 (php_sqlsrv_72_ts.dll) 需要此驱动程序才能正确运行。谢谢。

标签: php wamp sqlsrv


【解决方案1】:

我通过将Microsoft ODBC Driver for SQL Server 安装到我的计算机上解决了这个问题。
然后我重新启动了我的 WAMP 服务器,它工作了!
Download ODBC Driver here

这给了我解决错误所需的信息:

if ($conn_CDR === false) {echo "Error (sqlsrv_connect): ".print_r(sqlsrv_errors(), true);}

【讨论】:

    【解决方案2】:
    $conn_CDR = sqlsrv_connect( $serverName, $connectionInfo);
    $params = array();
    $sql = "your sql query";
    $result = sqlsrv_query($conn_CDR, $sql, $params));
    

    在此处查看手册https://www.php.net/manual/en/function.sqlsrv-query.php

    像这个例子:-

    $sql = "INSERT INTO Table_1 (id, data) VALUES (?, ?)";
    $params = array(1, "some data");
    
    $stmt = sqlsrv_query( $conn, $sql, $params);
    if( $stmt === false ) {
         die( print_r( sqlsrv_errors(), true));
    }
    

    【讨论】:

    • 这段代码和我的几乎一样,你的代码确实会产生一些语法错误
    • @Jbadminton 如果此代码与我的代码几乎相同,与 php.net 手册中的代码相同,那你为什么不投我一票?
    • 因为您的代码不是答案,与问题几乎相同
    • 这是你的代码 $result = sqlsrv_query($conn_CDR, "", $params);检查这里的 2 参数在哪里?
    • 我知道如何使用sqlsrv但不知道如何安装它
    猜你喜欢
    • 1970-01-01
    • 2013-07-06
    • 2013-03-20
    • 1970-01-01
    • 1970-01-01
    • 2016-05-19
    • 1970-01-01
    • 2018-10-10
    • 2017-06-14
    相关资源
    最近更新 更多