PHP在单个文件中连接到MySQL和MSSQL

时间:2016-09-29 09:05:46

标签: php mysql sql-server database mysqli

我正在我的XAMPP(5.6.8)localhost上开发一个小型Web应用程序,它从两个远程数据库中选择数据,一个是 MySQL ,另一个是 MSSQL

我不确定如何在一个 conn.php 文件中连接这两个数据库 - 如果它甚至可能?

我可以使用HeadiSQL& SQL Server Management Studio登录到每个数据库,运行查询和检索数据,所以我知道它不是用户权限问题。注意:我不是这些数据库的管理员。

我有一个 conn.php 文件,我在整个网络应用程序中都包含这个文件。该文件的内容如下。

当我包含MSSQL连接线时,我在我的网络应用程序上收到以下错误消息;

  

localhost目前无法处理此请求。 HTTP ERROR 500

当我删除MSSQL连接线时,我的网络应用正常加载。 我是否应该以不同的方式连接到MSSQL数据库,这显然是个问题。

conn.php

<?php
// Create MySQL connection
$conn = new mysqli('123.123.123.123', 'db_user', 'password', 'db_name'); 
if ($conn->connect_errno > 0) {
    die('Unable to connect to database [' . $conn->connect_error . ']');
} 
// end MySQL connection

//Create MSSQL connection
$serverName = "456.456.456.456";
$connectionInfo = array( "Database"=>"db_name", "UID"=>"db_user", "PWD"=>"password");
$conn2 = sqlsrv_connect( $serverName, $connectionInfo);

if( $conn2 ) {
     echo "Connection established to smartcard.<br />";
}else{
     echo "Connection could not be established.<br />";
     die( print_r( sqlsrv_errors(), true));
}
// end MSSQL connection
?>

我还创建了一个单独的 conn_1.php 页面,其中包含 MSSQL连接代码。当我在浏览器中访问此页面时,我看到以下错误;

  

localhost目前无法处理此请求。 HTTP ERROR 500

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

mysqli sqlsrv 是完全不同的扩展。他们不共享代码库,目标DBMS甚至接口 - 他们也不会说变量或资源。您应该尝试两个基本的故障排除步骤:

  1. 从其他客户端(例如SQL Server Management Studio)连接到SQL Server,以确定您的凭据和服务器设置是否正确。

  2. 独立运行您的SQLSRV代码,可能来自简短的测试脚本,以丢弃代码其他部分的副作用。

  3. 当我最初误读你的问题时,我写了一些建议。我会保留一个改编版本,因为我觉得它有用。

    处理具有不同设计的两个不同数据库API可能很困难。通常更容易切换到像PDO这样的跨DBMS库。 ( sqlsrv 扩展提供了PDO驱动程序。)

    如果这不是一个选项,您可以编写自定义包装器。您可以使用所需的功能定义接口,例如:

    interface MyDatabaseConnection {
        public function connect();
        public function prepare(array $params);
    }
    interface MyDatabaseStatement{
        public function execute($sql);
        public function fetchRow();
    }
    

    ...并编写为两个DBMS实现它的类。