Mssql Class
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
Code (php)
1
2
3
4
5
6
2
3
4
5
6
private $_link;
public function connect($server='', $username='', $password='', $new_link=true)
{
$this->_link = mssql_connect($server, $username, $password, $new_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
Code (php)
1
2
3
4
5
6
2
3
4
5
6
$connectionInfo = array( "UID"=>"username",
"PWD"=>"password",
"Database"=>"test");
/* Connect using SQL Server Authentication. */
$conn = sqlsrv_connect( $serverName, $connectionInfo);
"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
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
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();
}
{
$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
Code (php)
1
2
3
4
5
2
3
4
5
public function dbInfo()
{
$this->_dbInfo = array("UID"=>"user","PWD"=>"password","Database"=>$this->_database);
$this->connect();
}
{
$this->_dbInfo = array("UID"=>"user","PWD"=>"password","Database"=>$this->_database);
$this->connect();
}
Foutmelding zoals verwacht
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
Unable to connect.
Array ( [0] => Array ( [0] => IMSSP [SQLSTATE] => IMSSP [1] => -33 => -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
Array ( [0] => Array ( [0] => IMSSP [SQLSTATE] => IMSSP [1] => -33 => -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
Gewijzigd op 07/11/2014 11:35:55 door Thomas de vries
Zo te zien aan de error is de databasenaam geen string.
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.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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();
}
{
$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
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.