PHP ile MSSQL veritabanına bağlanılamıyor

6 Cevap php

Ben bir MSSQL 2005 db erişmek için girişim mevcut kod kullanıyorum:

<?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);
?>

Bu, aşağıdaki dönen:

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

Eğer sorun nedir sizce?

6 Cevap

Lütfen dll bir sürümü yanlış gibi bana geliyor. Çeşit bir sorun PHP'nin yaratıcıları kendilerini çözmek olmadığını SQL2005 için SQL2000 gelen hareket ile oldu. Burada bu konuda mesajların çeşitli vardır: the following link

Ben DLL ntwdblib.dll ve sürüm en azından sürüm 2000.80.194.0 olması gerekir inanıyorum. Apache veya WampServer çalıştırıyorsanız, üzerine gereken Apache dll saklanır özdeş bir dll var.

Burada çalışacak bir dll sürümü için indirme bağlantısını http://www.mdome.org/2011/05/04/php-and-sql-server-2008-r2-ntwdblib-dll/

Not: Ben bir kaç gün önce bu sorunu olan ve doğru dll bulma ve hem de çalışmak için izin üzerine yazılmasını edildi.

Ayrıca: Bu kurulum uzaktan bağlantı gerekebilir. Sql Server 2005 varsayılan olarak devre dışı uzak bağlantılara sahiptir. SQL Yüzey Alanı Yapılandırması yardımcı programını çalıştırarak uzak bağlantılara izin verebilirsiniz.

Geçersiz kimlik bilgileri, sizin localhost kullanarak değil eğer güvenli listeye sunucunun ip eklemek emin olun.

Ben birkaç ay önce bu konuda bazı zorluklar vardı, ve ben sunucuyu belirtirken çalışması için tek yol örnek adını dahil etmek olduğunu öğrendim. Örneğin:

$myServer = "SERVER\INSTANCENAME";

Sadece sunucu belirterek, TCP / IP etkin bile, işe yaramaz.

İlk veritabanları izin görmek yerine, tarayıcınızda phpinfo() gibi bir şey yapmaya çalışın.

Eğer böyle bir şey görmüyorsanız mssql o yapılandırılmamış. Yani bağlantı dizesi aşağıdaki gibi olacak ... odbc_connect() hangi yapılandırılacaktır kullanın:

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

Eğer mssql 2005 veya 2008 kullanıyorsanız, daha sonra 10,0 d 11,0 değiştirmek ve diğer sürümleri için sadece mssql sürümüne değiştirin.

kullanarak durdurmak

mssql_connect

ve kullanmaya başla

sqlsrv_connect

Bu size büyük bir dertten kurtaracak. Ayrıca, işlev * mssql_connect * onaylanmaz.

Sqlsrv_connect kullanmak için, sürücüyü indirmek gerekir ve sqlsrv fonksiyonlarını tanımak için PHP için bir uzantısı olarak yükleyin. Microsoft sürücüsünü indirmek bu indirme url sonrası anda, Center ("sql server php sürücü" için arama) indir edildi: http://www.microsoft.com/en-us/download/details.aspx?id=20098

Kurulum için doğru adımlar açıkça http://www.microsoft.com/en-us/download/details.aspx?id=20098 de Microsoft kendisi tarafından açıklanmıştır

  1. sürücüsünü indirmek. 2.. PHP ext klasöre koyun. 3.. Php.ini 4. güncelleyin. Sunucusunu yeniden başlatın.

SQL Server sürücüsü yüklendikten sonra, o zaman sadece http://www.php.net/manual/en/function.sqlsrv-connect.php gelen yönergeleri izleyin. Hızlı bir pasajı aşağıda:

<?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));
}
?>

Kadar oy!