我正在我的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
感谢任何帮助。
答案 0 :(得分:0)
mysqli 和 sqlsrv 是完全不同的扩展。他们不共享代码库,目标DBMS甚至接口 - 他们也不会说变量或资源。您应该尝试两个基本的故障排除步骤:
从其他客户端(例如SQL Server Management Studio)连接到SQL Server,以确定您的凭据和服务器设置是否正确。
独立运行您的SQLSRV代码,可能来自简短的测试脚本,以丢弃代码其他部分的副作用。
当我最初误读你的问题时,我写了一些建议。我会保留一个改编版本,因为我觉得它有用。
处理具有不同设计的两个不同数据库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实现它的类。