4

msSQL 2005 データベースにアクセスしようとして、現在のコードを使用しています。

<?php
$myServer = "[server]";
$myUser = "[username]";
$myPass = "[password]";
$myDB = "[db]";

//connection to the database
$dbhandle = mssql_connect($myServer, $myUser, $myPass)
  or die("Couldn't connect to SQL Server on $myServer");

//select a database to work with
$selected = mssql_select_db($myDB, $dbhandle)
  or die("Couldn't open database $myDB");

//declare the SQL statement that will query the database
$query = "SELECT id, name, year ";
$query .= "FROM cars ";
$query .= "WHERE name='BMW'";

//execute the SQL query and return records
$result = mssql_query($query);

$numRows = mssql_num_rows($result);
echo "<h1>" . $numRows . " Row" . ($numRows == 1 ? "" : "s") . " Returned </h1>";

//display the results
while($row = mssql_fetch_array($result))
{
  echo "<li>" . $row["id"] . $row["name"] . $row["year"] . "</li>";
}
//close the connection
mssql_close($dbhandle);
?>

以下を返します。

Warning: mssql_connect() [function.mssql-connect]: Unable to connect to server: XXXXXXX in D:\xxxxx.xxx\xxxx.php on line 16
Couldn't connect to SQL Server on XXXXXXX

問題は何だと思いますか?

4

9 に答える 9

5

DLL の 1 つが間違ったバージョンのように思えます。SQL2000 から SQL2005 への移行に伴い、PHP の作成者が解決しなかったある種の問題がありました。ここにはさまざまな投稿があります: 次のリンク

DLL は ntwdblib.dll で、バージョンは少なくとも 2000.80.194.0 である必要があると思います。Apache または WampServer を実行している場合、上書きする必要がある Apache DLL が格納されている同一の dll があります。

注: 私は数日前にこの問題を抱えていましたが、正しい DLL を見つけて上書きすることで問題が解決しました。

また、リモート接続をセットアップする必要がある場合があります。Sql Server 2005 では、デフォルトでリモート接続が無効になっています。SQL Surface Area Configuration ユーティリティを実行することで、リモート接続を許可できます。

于 2009-01-22T17:19:02.360 に答える
4

呼び出しmssql_get_last_message()て、最後のエラー メッセージを取得してみてください。

$dbhandle = mssql_connect($myServer, $myUser, $myPass)
  or die("Couldn't connect to SQL Server on $myServer. Error: " . mssql_get_last_message());
于 2009-01-22T17:12:37.037 に答える
1

使用をやめる

mssql_connect

そして使い始める

sqlsrv_connect

これにより、多くの頭痛が解消されます。さらに、関数 *mssql_connect* は廃止されました。

sqlsrv_connect を使用するには、ドライバーをダウンロードして PHP の拡張機能としてインストールし、sqlsrv関数を認識する必要があります。Microsoft ダウンロード センター (「sql server php driver」を検索) からドライバーをダウンロードします。この記事の時点でのダウンロード URL は次のとおりです。 =20098

インストールの正しい手順については、Microsoft 自身がhttp://www.microsoft.com/en-us/download/details.aspx?id=20098で明確に説明しています。

  1. ドライバーをダウンロードします。2. PHP ext フォルダーに配置します。3. php.ini を更新します。 4. サーバーを再起動します。

SQL Server ドライバーをインストールしたら、http://www.php.net/manual/en/function.sqlsrv-connect.php の指示に従って ください。以下に簡単なスニペットを示します。

<?php
$serverName = "serverName\sqlexpress"; //serverName\instanceName

// Since UID and PWD are not specified in the $connectionInfo array,
// The connection will be attempted using Windows Authentication.
$connectionInfo = array( "Database"=>"dbName");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

if( $conn ) {
     echo "Connection established.<br />";
}else{
     echo "Connection could not be established.<br />";
     die( print_r( sqlsrv_errors(), true));
}
?>

投票してください!

于 2014-03-07T18:31:16.890 に答える
0

資格情報が無効です。localhost を使用していない場合は、サーバーの IP をセーフ リストに追加してください。

于 2009-01-22T17:11:52.700 に答える
0

phpinfo()まず、どのデータベースが許可されているかを確認するよりも、ブラウザで何かを試してみてください。

何も表示mssqlされない場合は、構成されていません。したがって、odbc_connect()構成される を使用してください...接続文字列は次のようになります。

$server = '';
$user = '';
$password = '';
$database = '';
$connection = odbc_connect("Driver={SQL Server Native Client `11.0};Server=$server;Database=$database;", $user, $password);`

mssql 2005 または 2008 を使用している場合は、d 11.0 を 10.0 に変更し、他のバージョンの場合は、mssql のバージョンに変更します。

于 2013-03-16T23:27:42.190 に答える
0

このサイトhttp://www.microsoft.com/en-us/download/details.aspx?id=20098でドライバーをダウンロードし、php.ini ファイルを開き、ダウンロードした DLL を追加します。

于 2014-06-27T09:48:09.637 に答える