繁体   English   中英

如何使用MS SQL Server与SLIM REST API连接?

[英]How to connect with SLIM REST api with MS SQL server?

我正在尝试使用Slim连接MSSQLSERVER2012从API调用中获取结果

该示例曾经与MYSQL getconnection函数一起使用(请参见下文),但是当我尝试与MsSQL Server 2012连接时,出现诸如“ api调用错误”无效的数据源名称”之类的错误

HTTP://localhost/msapi/api.php/clients

1'api调用错误“无效的数据源名称”

require '/Slim/Slim.php';

$app = new Slim();

$app->get('/clients', 'getClients');

$app->run();

function getClients() {
    $sql = "select * FROM clients";

    try {
        $db = getConnection();
        $stmt = $db->query($sql);  
        $clients = $stmt->fetchAll(PDO::FETCH_OBJ);
        $db = null;
        echo '{"client": ' . json_encode($clients) . '}';
    } catch(PDOException $e) {
        echo '{"error":{"text":'. $e->getMessage() .'}}'; 
    }
}


function getConnection_MYSQL() {
    $dbhost="SERVER";
    $dbuser="USER";
    $dbpass="PASSWORD";
    $dbname="DB";
    $dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);  
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    return $dbh;
}


function getConnection() {
    $dbhost="SERVER";
    $dbuser="USER";
    $dbpass="PASSWORD";
    $dbname="DB";
    $dbh = new PDO ("ADODB.Connection");

      $connStr = "PROVIDER=SQLOLEDB;SERVER=".$dbhost.";UID=".$dbuser.";PWD=".$dbpass.";DATABASE=".$dbname;  
      $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);    
      $dbh->open($connStr); //Open the connection to the database  

    return $dbh;
}

函数getConnection_MYSQL()是一个有效的示例。 但是getConnection()尝试与MS SQL Server连接吗?

您是否知道为什么我使用getConnection()函数获取“无效的数据源名称”?

由于您没有发布替代的DSN字符串,因此我假设您使用的是示例中的字符串,只需替换主机,用户名和密码即可。 这行不通。

在Windows主机上运行Slim应用程序时,可以(并且应该)使用Microsoft的PHP SQL Server驱动程序(sqlsrv)

有2个版本sqlsrv.dll和pdo_sqlsrv.dll。 当您想重用大多数代码时,应使用后者。 这样,您可能只需要修改DSN(请参阅php docs ):

new PDO("sqlsrv:Server=localhost;Database=testdb", "UserName", "Password");

如果使用的是第一个数据库,则必须更新连接数据库的方式并创建查询。 您可以阅读《 初学者指南》,以查看一些简化示例。

如果运行的不是在Windows计算机上运行应用程序,则可能必须设置ODBC和FreeTDS,然后将PDO与ODBC-DSN一起使用。 根据我的经验,这将需要做很多工作,但是这里有一些很好的教程。 只是谷歌的“ freetds sql server”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM