[英]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.