Goedendag php leden,

Ik zit met een probleem cq vraag.

Ik heb vandaag PHP 5.3 vervangen door PHP 5.5
Nu kwam ik erachter dat mssql_connect niet meer werkt maar dat het naar

sqlsrv_connect is verandert.

Nu heb ik dit aangepast maar nu werkt mijn gehele mssql class niet meer.
Heb al een aantal dingen toegevoegd en verandert maar helaas mocht niet meer baten

Voorheen maakte ik zo een verbinding


private $_link;

	public function connect($server='', $username='', $password='', $new_link=true)
	{
		$this->_link = mssql_connect($server, $username, $password, $new_link);
	}


//Creating DB connection
$db = new MSSQL();
$db->connect('127.0.0.1\SQLEXPRESS','user','pass');

volgens MS moet het nu zo


$connectionInfo = array( "UID"=>"username",
                         "PWD"=>"password",
                         "Database"=>"test");

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


dus ik ben aan het veranderen geweest.
Op moment zit mijn connectie er zo uit


public function connect()
	{
		$this->_link = sqlsrv_connect($this->_Server, $this->_dbInfo);
		if($this->_link == FALSE) { 
			echo "Unable to connect.</br>";
			die( print_r( sqlsrv_errors(), true)); 
		}
	}

public function dbInfo()
	{
		$this->_dbInfo = array("UID"=>"user","PWD"=>"password");
		$this->connect();
	}


Zoals jullie kunnen zien staat er geen database omdat ik met MSSQL 4 verschillende databases heb aangemaakt. voor verschillende doeleinde van de website.

Nu is het zo dat als ik een database ga selecteren en vervolgens ook het resultaat wil krijgen
geeft die een foutmelding weer.

Warning: sqlsrv_num_rows() expects parameter 1 to be resource, boolean given in

Dit kan kloppen omdat die de database niet heeft kunnen pakken waar die het uit moet halen.

Volgens MS moet ik namelijk gelijk een Database opgeven als ik een verbinding met MSSQL tot stand wil brengen. Dus heb ik het aangepast naar dit


public function dbInfo()
	{
		$this->_dbInfo = array("UID"=>"user","PWD"=>"password","Database"=>$this->_database);
		$this->connect();
	}


Foutmelding zoals verwacht


Unable to connect.
Array ( [0] => Array ( [0] => IMSSP [SQLSTATE] => IMSSP [1] => -33 [code] => -33 [2] => Invalid value type for option Database was specified. String type was expected. [message] => Invalid value type for option Database was specified. String type was expected. ) ) 


wie kan mij hierbij helpen omdat ik het nu niet meer snap hoe ik dit het beste kan aanpakken.

Met vriendelijke groet,

Thomas de Vries
Zo te zien aan de error is de databasenaam geen string.
Nee dat kan kloppen omdat de private $_database leeg is.

omdat die dus eers een connectie aanmaakt. en daarna voeg ik pas de database toe.

en daar zit ook het probleem in.

volgens MS moet de database gelijk worden opgegeven als je dus een connectie maakt naar de MSSQL Server.

nu heb ik het zo gedaan.



public function connect()
	{
		$this->_link = sqlsrv_connect($this->_Server, $this->_dbInfo);
		if($this->_link == FALSE) { 
			echo "Unable to connect.</br>";
			echo $this->_database.'<br />';
			die( print_r( sqlsrv_errors(), true)); 
		}
	}

public function dbInfo()
	{
		$this->_dbInfo = array("UID"=>"user","PWD"=>"password","Database"=>$this->_database);
		$this->connect();
	}
	
	public function db($db) {
		$this->_database = $db;
		//echo $db;
		$this->dbInfo();
	}


en nu doe ik dus eerst dit als ik een Database wil hebben


$db->db('WEBSITE_DBF');


Dus nu gaat die eerst naar de functie db dan voert de functie db de functie dbInfo uit en dbInfo voert dan de functie connect uit.

Vindt het wel omslachtig maar het werkt wel. Weet alleen niet hoe dit zit kwa performance.

Reageren