mysql_connect check
Ik zit met een probleem maar ik krijg het niet opgelost. Ik heb al aantallen keren op php.net gekeken maar dit kan mij ook niet verder helpen.
Mijn probleem is dat de controle op mijn mysql_connect niet juist wordt uitgevoerd. Als ik bijv. mijn constante "USERNAME" verander van "root" naar "roo" geeft mijn code de aangegeven mysql_error niet weer.
Graag zou ik weten wat er fout is aan het gene dat ik hier doe.
Alvast bedankt voor de moeite.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
function __construct() {
$this->message = new messages();
if(!isset($this->conntection)) {
$this->host = dbData::HOSTNAME;
$this->username = dbData::USERNAME;
$this->password = dbData::PASSWORD;
$this->dbname = dbData::DBNAME;
$this->tablePrefix = dbData::TABLE_PREFIX;
$this->openConnection();
} else {
$this->message->send(database::CONNECTION_EXISTS, 'db', true);
}
}
function openConnection() {
$this->connection = mysql_connect($this->host, $this->username, $this->password);
if(!$this->connection)
echo mysql_error();
exit;
mysql_select_db($this->dbname);
if(!$this->connection)
$this->message->send(database::WRONG_DB);
}
?>
function __construct() {
$this->message = new messages();
if(!isset($this->conntection)) {
$this->host = dbData::HOSTNAME;
$this->username = dbData::USERNAME;
$this->password = dbData::PASSWORD;
$this->dbname = dbData::DBNAME;
$this->tablePrefix = dbData::TABLE_PREFIX;
$this->openConnection();
} else {
$this->message->send(database::CONNECTION_EXISTS, 'db', true);
}
}
function openConnection() {
$this->connection = mysql_connect($this->host, $this->username, $this->password);
if(!$this->connection)
echo mysql_error();
exit;
mysql_select_db($this->dbname);
if(!$this->connection)
$this->message->send(database::WRONG_DB);
}
?>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
class dbData {
const HOSTNAME = 'localhost';
const USERNAME = 'roo';
const PASSWORD = '';
const DBNAME = 'cmssystem';
const TABLE_PREFIX = 'cms_';
}
?>
class dbData {
const HOSTNAME = 'localhost';
const USERNAME = 'roo';
const PASSWORD = '';
const DBNAME = 'cmssystem';
const TABLE_PREFIX = 'cms_';
}
?>
Gewijzigd op 21/04/2012 04:04:42 door Rick van Riel
En ook nog een ander feit:
Op php.net kom je controles tegen in de voorbeelden die het daglicht in feite niet mogen aanschouwen.
Je kan iets niet ontkennen als het niet van het type boolean is. Dus zomaar blindelings !$link doen is al niet goed als het om de mysql_connect gaat. Er wordt immers false terug gegeven als mysql_connect faalt of een link indentifier en dat is geen true
Let dus op bij functies die false teruggeven en geen enkel ander geval true
Bij dit soort functies krijg je:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
// mysql_connect
if (($link = mysql_connect(host,name,pass)) === false) {
// fout afhandeling
}
else {
// je kan verder met het benaderen van een database
}
?>
// mysql_connect
if (($link = mysql_connect(host,name,pass)) === false) {
// fout afhandeling
}
else {
// je kan verder met het benaderen van een database
}
?>
En dan ook nog maar een opmerking over je - in dit geval - if constructies, je doet er gewoon verstandiger aan om altijd de {} te gebruiken:
- overzichtelijker
- en het voorkomt fouten
En wat jouw probleem betreft:
tja wie oh wie gaat er nu aannames doen, m.a.w. leer je eigen code debuggen en gij zult bijna tot geen vragen meer hebben, wat dit soort problemen aangaat.
Gewijzigd op 21/04/2012 10:40:20 door Noppes Homeland
Ik heb dus besloten om Zend Framework te gebruiken.