[PHP] mysql_pconnect() geeft geen resource terug?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Mafkees
  • Registratie: Oktober 2003
  • Niet online
Ik heb een probleempje met de MySQL connect functies. Zowel mysql_connect() als mysql_pconnect() geven geen resource terug maar een boolean. De verbinding lukt wel maar bij mijn query functies geef ik de link mee zodat ik later altijd nog twee database verbindingen kan openen. Daar gaat het dus fout..

Dit gaat al niet goed:

PHP:
1
2
3
4
5
// Verbinden met de database
$this->databaseLink = @mysql_pconnect($host, $username, $password) || trigger_error(mysql_error(), E_USER_ERROR);

var_dump($this->databaseLink);
exit;


dat geeft namelijk bool(true) terug terwijl dat een resource van de link had moeten zijn. Zodra ik dan een query probeer uit te voeren op de volgende manier:

PHP:
1
2
// SQL uitvoeren
$this->queryResource = @mysql_query($this->sql, $this->databaseLink) || trigger_error(mysql_error(), E_USER_ERROR);


krijg ik de foutmelding: mysql_query(): supplied argument is not a valid MySQL-Link resource.

En dat klopt ook eigenlijk wel, want het is een boolean. Heb nog niks kunnen vinden, weet iemand waarom ik een boolean terug krijg en geen resource? :(

Geïnstalleerde modules die van belang zijn:

code:
1
2
3
4
httpd.i386                               2.2.3-5                installed
mysql-server.i386                        5.0.27-1.fc6           installed
php.i386                                 5.1.6-3.3.fc6          installed
php-mysql.i386                           5.1.6-3.3.fc6          installed

Acties:
  • 0 Henk 'm!

  • Evilbee
  • Registratie: November 2002
  • Laatst online: 14:59
Haal die @ voor mysql_connect eens weg. Dan kan je de foutmelding zien.

LinkedIn - Collega worden?


Acties:
  • 0 Henk 'm!

  • eek
  • Registratie: Februari 2001
  • Laatst online: 06-04-2020

eek

@MagickNET

Moet het niet zijn?
PHP:
1
($this->databaseLink = @mysql_pconnect($host, $username, $password)) || trigger_error(mysql_error(), E_USER_ERROR);

Skill is when luck becomes a habit.


Acties:
  • 0 Henk 'm!

  • Mafkees
  • Registratie: Oktober 2003
  • Niet online
De connect gaat gewoon goed en geeft ook geen foutmelding terug, wel een boolean :P
eek schreef op zondag 28 januari 2007 @ 12:20:
Moet het niet zijn?
PHP:
1
($this->databaseLink = @mysql_pconnect($host, $username, $password)) || trigger_error(mysql_error(), E_USER_ERROR);
Idem.. :)

[ Voor 62% gewijzigd door Mafkees op 28-01-2007 12:22 ]


Acties:
  • 0 Henk 'm!

  • Evilbee
  • Registratie: November 2002
  • Laatst online: 14:59
Zet na die mysql_pconnect eens dit:
PHP:
1
echo mysql_error();


Zodat ie hem dus altijd laat zien.

[ Voor 22% gewijzigd door Evilbee op 28-01-2007 12:54 ]

LinkedIn - Collega worden?


Acties:
  • 0 Henk 'm!

  • Mafkees
  • Registratie: Oktober 2003
  • Niet online
PHP:
1
2
3
4
5
6
7
// Verbinden met de database
$this->databaseLink = @mysql_pconnect($host, $username, $password) || trigger_error(mysql_error(), E_USER_ERROR);

echo "melding moet hier...<br>";
echo mysql_error();
echo "<br>...melding hierboven";
exit;


geeft:

code:
1
2
3
melding moet hier...

...melding hierboven


Zoals 'k al zei.. het gaat gewoon goed ;) Hij geeft alleen een boolean terug in plaats van een resource.

Acties:
  • 0 Henk 'm!

  • Mafkees
  • Registratie: Oktober 2003
  • Niet online
Opgelost!

Bij de mysql_pconnect en mysql_query functie gebruikte ik de operator || om te kijken of het wel of niet goed ging. Hier _moet_ de operator OR staan blijkbaar. Volgens de PHP documentatie doen ze precies hetzelfde, maar eigenlijk toch ook niet :?

Beetje vaag :P

Acties:
  • 0 Henk 'm!

Verwijderd

Mafkees schreef op zondag 28 januari 2007 @ 13:38:
Opgelost!

Bij de mysql_pconnect en mysql_query functie gebruikte ik de operator || om te kijken of het wel of niet goed ging. Hier _moet_ de operator OR staan blijkbaar. Volgens de PHP documentatie doen ze precies hetzelfde, maar eigenlijk toch ook niet :?

Beetje vaag :P
Helemaal niet vaag. Lees nou gewoon dat stukje over operator precedence. Die or komt pas na de assignment, en dus wordt eerst het resultaat toegekend aan $this->databaseLink en daarna pas wordt het stuk na de or geëvalueerd.
Als je || gebruikt, wordt nog vóór de assignment (aan $this->databaseLink) het tweede stuk geëvalueerd, en het resultaat van die vergelijking is vanzelfsprekend een boolean.

Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
eek sloeg in ieder geval de spijker op zijn kop, maar misschien deed je eerst nog wat anders voordat je met var_dump keek.

Acties:
  • 0 Henk 'm!

  • Mafkees
  • Registratie: Oktober 2003
  • Niet online
GlowMouse schreef op zondag 28 januari 2007 @ 13:47:
eek sloeg in ieder geval de spijker op zijn kop, maar misschien deed je eerst nog wat anders voordat je met var_dump keek.
eek had idd gelijk, ik keek niet goed naar zijn code. Heb het geprobeerd en het lost het probleem idd op.. Iig weet ik nu het verschil tussen || en or :)
Pagina: 1