2013-02-28 4 views
5

J'essaie d'obtenir wamp php pour communiquer avec une base de données MsSQL mais je n'arrive pas à le faire fonctionner. Le message d'erreur actuel que je reçois sur le navigateur (Chrome) est:php extension mssql sur wamp

Warning: mssql_connect() [function.mssql-connect]: Unable to connect to server: (...) Couldn't connect to SQL Server 
  1. ntwdblib.dll est la version correcte (2000.80.194.0)

  2. Je ne peux pas utiliser php_sqlsrv (le déploiement serveur linux est que, sqlsrv fonctionne uniquement sous windows), bien que d'utiliser sqlsrv je peux conclure que les informations d'accès est correcte (serveur, utilisateur, mot de passe)

  3. J'ai rétrogradé retour à WampServer 2.1e & php 5.3.1 (Certaines personnes l'ont obtenu comme cela)

  4. il n'y a aucune erreur sur le apache_error.log lorsque je redémarre le serveur WAMP

  5. installation freetds sur ma machine se bloque apache

  6. machine distante utilise avec succès php_mssql.dll (serveur linux)

Le code J'utilise:

<?php 
$dbhandle = mssql_connect($ip,$user,$pass) or die("Couldn't connect to SQL Server on $ip"); 
$selected = mssql_select_db($dbname,$dbhandle) or die("Couldn't open database at SQL server: $ip"); 
?> 

Je vais maintenant essayer une machine virtuelle Linux, mais sûrement, même si cela fonctionne, ce sera un problème (lent et sans fonctionnalités).

Mon système: Windows 7, Wampserver 2.1e, PHP 5.3.1

Que puis-je essayer? :(

+0

Pouvez-vous montrer le code que vous avez essayé? – Tjoene

+0

Bien sûr, voici mon code: $ dbhandle = mssql_connect ($ ip, $ utilisateur, $ pass) ou die ("Impossible de se connecter à SQL Server sur $ ip"); $ Selected = mssql_select_db ($ dbname, $ dbhandle) ou die ("Impossible d'ouvrir la base de données sur le serveur SQL: $ ip"); –

+0

Toujours coincé là-dessus. En ce moment j'utilise une fonction qui vérifie si le site est en ligne. Si c'est le cas, il appelle mssql (qui fonctionne sur le serveur linux), sinon il appelle fake des tables sur mysql, qui ont la même structure que les tables mssql. Cela fonctionne mais il est loin d'être idéal ...: P –

Répondre

0

Avez-vous installé MsSQL Parce que M est WAMP MySQL MSSQL pas

+0

Je sais, mais je dois travailler avec un mssql db dans ce cas, pas mysql. La base de données est distante, ce n'est pas sur ma machine. –

0

Impossible de se connecter au serveur:. (...) Impossible de se connecter à SQL Server »

avez-vous installé un module de pilote au sein de PHP pour MS-SQL ??

Outre une machine virtuelle est pas nécessairement lent et monotone - au moins cela fonctionne :)

MDB2 ou AOP MIGH t être le plus approprié pour l'abstraction des E/S de la base de données.

Q: Pouvez-vous ouvrir un terminal à MS-SQL, par ex. Telnet ??

(Ceci réglerait au moins n'importe quel type de problèmes de connectivité).

Vous pourriez avoir besoin de ce module ici: PECL odbtp> = 1.1.1 (protocole de transport de base de données ouverte)

extension=php_mssql.dll 

^aussi, la caisse phpinfo() une fois que si cette extension est encore chargée.

http://www.php.net/manual/en/mssql.installation.php

bien - installer mySQL sous Windows ne serait pas un problème (dans le cas où il serait logique).

+0

Merci pour votre réponse. J'ai installé l'extension php_mssql et aucune erreur n'a été signalée par apache.Je sais aussi qu'il n'y a pas de problèmes de connectivité car si j'utilise l'extension sqlsrv (avec les mêmes paramètres) tout fonctionne correctement. –

1

En supposant que vous avez essayé d'obtenir le pilote/extension installée d'ici: http://www.microsoft.com/en-gb/download/details.aspx?id=20098 et vous avez changé votre php.ini dans votre dossier * de pile AMP PHP ..; et mettez l'extension mssql dans le dossier php/ext ...

Après plusieurs heures de recherche, ce guide m'a permis de me connecter à une base de données MS SQL. http://webcheatsheet.com/php/connect_mssql_database.php

modifier: De plus ma classe de connexion prend DB Uname PW et serverIP en tant que paramètres du constructeur, et le constructeur appelle la fonction setCon(), donc quand l'objet est créé la connexion est trop. alors je peux appeler les requêtes sur l'objet connexion dans un style POO

function setCon(){ 
    $conn = mssql_connect($this->server, $this->UName, $this->pw); 
    if ($conn){ 
     echo "Connection established @ $this->server.$this->DB (Connected to MS SQL DB)\n"; 
    } 
    else{ 
     echo "Connection could not be established."; 
     die(print_r(sqlsrv_errors(), true)); 
    } 

, puis plus tard, cela est nécessaire pour accéder à la connexion créée

function getCon(){ 
    return mssql_connect($this->server, $this->UName, $this->pw); 
} 
0

actualy par défaut WampServer ne vient pas avec php_mssql. dll l'extension est faite au-dessus de php_pdo_mssql ou php_dblib. testé sur x64 WampServer 2 PHP 5.3.13

  • En utilisant php_pdo_mssql

    1. Installation WampServer
    2. Activer php_pdo_mssql
    3. Activer php_mssql
    4. copie ntwdblib.dll bin/php/php {version}/ext/et bin/apache/{version}/bin
    5. redémarrer tous les services
  • En utilisant php_dblib

    1. au lieu de php_pdo_mssql activer php_dblib.

Attention n'activons pas les deux php_pdo_mssql et php_dblib.

Sur différentes versions de php wampserver fonctionne différemment sur 5.3.1 première solution a fonctionné pour moi mais sur 5.3.13 seconde.