Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP SQL Server驱动程序时出错_Php_Sql Server_Database_Cakephp - Fatal编程技术网

使用PHP SQL Server驱动程序时出错

使用PHP SQL Server驱动程序时出错,php,sql-server,database,cakephp,Php,Sql Server,Database,Cakephp,升级了一个(dev)Cake PHP站点,不得不将数据库驱动程序从ADO更改为SQL Server自己的驱动程序,因为Cake 1.3,I不再支持ADO。新的SQL Server驱动程序安装在PHP中,显示在PHPinfo()中,应该可以正常工作,但当我尝试使用数据库加载页面时,出现以下错误: Warning (2): sqlsrv_query() expects parameter 1 to be resource, boolean given [APP\plugins\datasource

升级了一个(dev)Cake PHP站点,不得不将数据库驱动程序从ADO更改为SQL Server自己的驱动程序,因为Cake 1.3,I不再支持ADO。新的SQL Server驱动程序安装在PHP中,显示在PHPinfo()中,应该可以正常工作,但当我尝试使用数据库加载页面时,出现以下错误:

Warning (2): sqlsrv_query() expects parameter 1 to be resource, boolean given 
[APP\plugins\datasources\models\datasources\dbo\dbo_sqlsrv.php, line 184]
Warning (512): SQL Error: An invalid parameter was passed to sqlsrv_query.
 [CORE\cake\libs\model\datasources\dbo_source.php, line 684]
Query: SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES 
似乎发生的事情是我的连接没有在dbo_sqlsrv.php驱动程序中建立;一个“
$this->connection
”变量应该是连接资源,然后传递给sqlsrv_query(),它显然是一个错误的bool(我试图回显该变量,但它没有显示任何内容)

这是应设置连接的位置:

sqlsrv_connect($this->config['host'] . $port, $params)
打印传入的变量会产生以下结果:

SRV, 1433 Array ( [Database] => DB [CharacterSet] => char 
[MultipleActiveResultSets] => [UID] => sa [PWD] => password )

这些参数中的每一个都是正确的,是否有一种特定的方式可以格式化或更改此驱动程序的数据库配置数组,或者是否缺少某些内容

我认为您的连接有问题。PHP无法与sql Server建立连接

var $default = array(
        'driver' => 'sqlsrv',
        'persistent' => false,
        'host' => 'Myhome-PC\SQLEXPRESS', // or ip-address(192.168.1.13)
        'login' => 'username',
        'password' => 'password',
        'database' => 'db',
        'prefix' => 'tbl',
        'port' => NULL,
        'returnDatesAsStrings' => True
    );
我认为这种联系应该是这样的

这是我用过的

您的
$param
应该是这样的

$connectionInfo = array("UID" => $config['login'], 
                        "PWD" => $config['password'], 
                        "Database" => $config['database'],   
                        'MultipleActiveResultSets' => 1,
                        'ConnectionPooling' => 0
);
if(isset($config['ReturnDatesAsStrings'])){
         $connectionInfo['ReturnDatesAsStrings'] = $config['ReturnDatesAsStrings'];
}
$this->connection = sqlsrv_connect($config['host'] . $port, $connectionInfo);

此错误是由于过时的SQL Server驱动程序造成的。从下面安装最新版本允许SQL Server连接:


这正是它所做的,我没有配置端口信息,但它使用的是正确的默认端口。您的最后一段代码几乎就是sqlsrv.php驱动程序文件中的内容。您是否尝试过从简单的php连接sql server,我是说没有框架?