15

我想使用 PHP 连接到 sql server 数据库。

我安装了 xampp 1.7.0(php 5.2) 和 SQLSRV20。我已经添加了扩展php.ini,我收到了这个错误:

Warning: mssql_connect() [function.mssql-connect]: Unable to connect to 
server: 10.85.80.229 in C:\xampp\htdocs\xampp\test.php on line 07

代码:

<?php
$myServer = "10.85.80.229";
$myUser = "root";
$myPass = "pass";
$myDB = "testdb";

$dbhandle = mssql_connect($myServer, $myUser, $myPass)
  or die("Couldn't connect to SQL Server on $myServer"); 
?>

此错误消息是什么意思以及如何连接到 SQL Server?

4

15 回答 15

14

enable mssql in php.ini

;extension=php_mssql.dll

to

extension=php_mssql.dll

于 2014-04-10T09:42:17.450 回答
11
<?php  
$serverName = "ServerName"; 
$uid = "sqlusername";   
$pwd = "sqlpassword";  
$databaseName = "DBName"; 

$connectionInfo = array( "UID"=>$uid,                            
                         "PWD"=>$pwd,                            
                         "Database"=>$databaseName); 

/* Connect using SQL Server Authentication. */  
$conn = sqlsrv_connect( $serverName, $connectionInfo);  

$tsql = "SELECT id, FirstName, LastName, Email FROM tblContact";  

/* Execute the query. */  

$stmt = sqlsrv_query( $conn, $tsql);  

if ( $stmt )  
{  
     echo "Statement executed.<br>\n";  
}   
else   
{  
     echo "Error in statement execution.\n";  
     die( print_r( sqlsrv_errors(), true));  
}  

/* Iterate through the result set printing a row of data upon each iteration.*/  

while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_NUMERIC))  
{  
     echo "Col1: ".$row[0]."\n";  
     echo "Col2: ".$row[1]."\n";  
     echo "Col3: ".$row[2]."<br>\n";  
     echo "-----------------<br>\n";  
}  

/* Free statement and connection resources. */  
sqlsrv_free_stmt( $stmt);  
sqlsrv_close( $conn);  
?>  

http://robsphp.blogspot.ae/2012/09/how-to-install-microsofts-sql-server.html

于 2014-12-21T08:20:42.680 回答
2

试试这个代码

$serverName = "serverName\sqlexpress"; //serverName\instanceName
$connectionInfo = array( "Database"=>"dbName", "UID"=>"userName", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
于 2013-09-05T09:48:12.280 回答
2

如果您使用 sqlsrv_connect,您必须为您的 php 下载并安装 MS sql 驱动程序。在此处下载http://www.microsoft.com/en-us/download/details.aspx?id=20098将其 解压缩到您的 php 文件夹或 xampp 文件夹中的 ext 然后将其添加到您的 php.ini 行的末尾。 .ini 文件

extension=php_pdo_sqlsrv_55_ts.dll
extension=php_sqlsrv_55_ts.dll

我使用 xampp 5.5 版所以它的名字 php_pdo_sqlsrv_55_ts.dll & php_sqlsrv_55_ts.dll

如果您使用的是 xampp 5.5 版 dll 文件不包含在链接中...希望对您有所帮助

于 2014-04-10T07:45:29.427 回答
1

使用localhost而不是您的 IP 地址。

例如,

$myServer = "localhost";

还要仔细检查你的 mysql 用户名和密码。

于 2013-09-05T09:32:06.713 回答
1

进一步调查:打印出 mssql 错误消息:

$dbhandle = mssql_connect($myServer, $myUser, $myPass) or die("Could not connect to database: ".mssql_get_last_message()); 

指定端口也很重要:在 MS SQL Server 2000 上,用逗号分隔:

$myServer = "10.85.80.229:1443";

或者

$myServer = "10.85.80.229,1443";
于 2013-09-05T09:41:04.377 回答
1

MS SQL 连接到 php

  1. 从 microsoft 链接安装驱动器 https://www.microsoft.com/en-us/download/details.aspx?id=20098

  2. 安装后你会得到一些文件。将其存储在系统临时文件夹中

  3. 检查您的 php 版本、线程或非线程以及窗口位 - 32 或 64(线程或非线程,这是通过 phpinfo() 获取的)

  4. 根据您的系统和 xampp 配置(php 版本和所有)复制 2 个文件(php_sqlsrv 和 php_pdo_sqlsrv)到 xampp/php/ext 文件夹。

  5. 添加到 php.ini 文件 extension=php_sqlsrv_72_ts_x64 (php_sqlsrv_72_ts_x64.dll 是您在第 4 步中复制的文件) extension=php_pdo_sqlsrv_72_ts_x64 (php_pdo_sqlsrv_72_ts_x64.dll 是您在第 4 步中复制的文件)

  6. 下一个 PHP 代码

    $serverName =“桌面-我\MSSQLSERVER01”;(服务器名\实例名)

    // 由于 $connectionInfo 数组中未指定 UID 和 PWD, // 将使用 Windows 身份验证尝试连接。

    $connectionInfo = array("数据库"=>"testdb","CharacterSet"=>"UTF-8");

    $conn = sqlsrv_connect($serverName, $connectionInfo);

    if( $conn ) { //echo "连接建立。
    "; }else{ echo "无法建立连接。
    "; 死(print_r(sqlsrv_errors(),真));}

    //$sql = "INSERT INTO dbo.master ('name') VALUES ('test')"; $sql = "SELECT * FROM dbo.master"; $stmt = sqlsrv_query($conn, $sql);

    while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) { echo $row['id'].", ".$row['name']."
    "; }

    sqlsrv_free_stmt($stmt);

于 2020-11-19T05:24:25.483 回答
1
$dbhandle = sqlsrv_connect($myServer, $myUser, $myPass)
  or die("Couldn't connect to SQL Server on $myServer"); 

希望它有所帮助。

于 2016-01-27T06:26:02.297 回答
1
  1. 首先下载下面的软件 https://www.microsoft.com/en-us/download/details.aspx?id=30679 - 需要安装

https://www.microsoft.com/en-us/download/details.aspx?id=20098 - 当你运行这个软件时。它将提取dll文件。并粘贴两个 dll 文件(php_pdo_sqlsrv_55_ts.dll,extension=php_sqlsrv_55_ts.dll)这个位置 C:\wamp\bin\php\php5.6.40\ext\(请确保您的当前版本)

2)编辑 php.ini 文件添加以下行 extension=php_pdo_sqlsrv_55_ts.dll extension=php_sqlsrv_55_ts.dll

在您的 php.ini 文件中参考 screenshort add dll

于 2020-09-26T18:22:30.370 回答
1
 $server_name = "your server name";
 $database_name = "your database name";
 try
  {
   $conn = new PDO("sqlsrv:Server=$server_name;Database=$database_name;ConnectionPooling=0", "user_name", "password");
   $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

}
catch(PDOException $e)
{

    $e->getMessage();

}
于 2017-04-29T05:42:12.723 回答
0

我一直有同样的问题(我希望也一样)。无论如何,它原来是我的 ntwdblib.dll 版本,它在我的 PHP 文件夹中已经过时了。

http://dba.fyicenter.com/faq/sql_server_2/Finding_ntwdblib_dll_Version_2000_80_194_0.html

于 2014-01-03T11:28:38.830 回答
0

对于以下代码,您必须在 php.ini 中启用 mssql,如以下链接所述:http ://www.php.net/manual/en/mssql.installation.php

$myServer = "10.85.80.229";
$myUser = "root";
$myPass = "pass";
$myDB = "testdb";

$conn = mssql_connect($myServer,$myUser,$myPass);
if (!$conn)
{ 
  die('Not connected : ' . mssql_get_last_message());
} 
$db_selected = mssql_select_db($myDB, $conn);
if (!$db_selected) 
{
  die ('Can\'t use db : ' . mssql_get_last_message());
} 
于 2013-09-05T09:45:20.923 回答
0
$serverName="ServerName";
$uid = 'sa';
$pwd = "password";
$dbase = "dbname";

$conninfro = array("Database"=>$dbase, "UID"=>$uid, "PWD"=>$pwd);

$con = sqlsrv_connect( $serverName, $conninfro);
if( $con === false){
    die( print_r( sqlsrv_errors(), true));
}           
于 2021-07-22T17:18:15.757 回答
0

您可以使用 PDO。

1-您必须使用 php_pdo_sqlsrv_xx_nts.dll 和 php_sqlsrv_xx_nts.dll 扩展名。

请注意,您必须为您的 PHP 使用正确的版本。

2-使用此代码

    $servername = "IP";
    $username = "";
    $password = "";
    $db='';


try {
    $conn = new PDO("sqlsrv:Server=$servername;Database=$db", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

}
catch(PDOException $e)
{
    echo "Connection failed: " . $e->getMessage();
}

然后使用此代码:

$stmt=$conn->prepare("select * from table");
$stmt->execute();
$result=$stmt->fetchall();
于 2022-01-03T13:59:00.570 回答
-1

试试这个能够捕获抛出的异常:

$server_name = "your server name";
$database_name = "your database name";
try {
   $conn = new PDO("sqlsrv:Server=$server_name;Database=$database_name;ConnectionPooling=0", "user_name", "password");
   $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
    $e->getMessage();
}
于 2019-12-29T04:08:07.483 回答