login  Naam:   Wachtwoord: 
Registreer je!
 Forum

MySQL connect functie - werkt niet

Offline Nrzonline - 13/07/2006 01:02
Avatar van NrzonlinePHP ver gevorderde Hey SiMa lui,

Ik heb het volgende:

index.php
  1. <?PHP
  2.  
  3. require ('config.inc.php');
  4.  
  5. if (!connect_sql_database ())
  6. {
  7. echo 'Kon geen verbinding maken';
  8. }
  9. elseif (!select_sql_database ())
  10. {
  11. echo 'Kon geen database selecteren';
  12. }
  13. else
  14. {
  15. echo 'Alles goed, website weergeven';
  16. }
  17.  
  18. ?>


config.inc.php
  1. <?PHP
  2.  
  3. $cfg_host = "localhost";
  4. $cfg_user = "nrzonline";
  5. $cfg_pass = "password";
  6. $cfg_db = "website";
  7.  
  8. require ('functions.inc.php');
  9.  
  10. ?>


functions.inc.php
  1. <?PHP
  2.  
  3. function connect_sql_database ()
  4. {
  5. global $cfg_host; global $cfg_user; global $cfg_pass;
  6.  
  7. if (mysql_connect ($cfg_host, $cfg_user, $cfg_pass))
  8. {
  9. return TRUE;
  10. }
  11. else
  12. {
  13. return FALSE;
  14. }
  15. }
  16.  
  17. function select_sql_database ()
  18. {
  19. global $cfg_db;
  20.  
  21. if (mysql_select_db ($cfg_db))
  22. {
  23. return TRUE;
  24. }
  25. else
  26. {
  27. return FALSE;
  28. }
  29. }
  30.  
  31. ?>


Als er geen connectie tot stand zou kunnen worden gebracht,
zou ik dus te zien krijgen: 'kon geen verbinding maken' of 'kon
geen database selecteren'. Dit gebeurt niet, dus je zou denken
dat er een connectie tot stand is gebracht. Niet dus.. Zogauw
dat als ik er een query in gooi, gaat hij op zijn bek, en krijg
ik de volgende error:

Citaat:
MySQL Error:
Warning: mysql_select_db() [function.mysql-select-db]: Access denied for user 'ODBC'@'localhost' (using password: NO) in D:ProgrammasXAMPPxampphtdocswebshopincludesconfig.inc.php on line 30


Weet iemand hoe ik dit kan oplossen, of kan dit ook aan mijn
phpmyadmin o.i.d liggen (Aangezien ik nu voor het eerst XAMPP
gebruik. Eerder altijd yellowtip, en toen werkte deze manier
(volgensmij 100% precies hetzelfde) wel)

23 antwoorden

Gesponsorde links
Offline Rens - 13/07/2006 01:22
Avatar van Rens Gouden medaille

Crew algemeen
Ik geloof dat je i.p.v. true, de verbinding zelf moet returnen.
Zo dus:
  1. <?PHP
  2. function connect_sql_database ()
  3. {
  4. global $cfg_host; global $cfg_user; global $cfg_pass;
  5.  
  6. return mysql_connect ($cfg_host, $cfg_user, $cfg_pass);
  7. }
  8. ?>

Aangezien mysql_connect een 'resource' terugstuurd...

Bij mysql_select_db is dit niet zo, die stuurt een bool terug (true/false).
Offline Nrzonline - 13/07/2006 01:27
Avatar van Nrzonline PHP ver gevorderde Dit is inderdaad wel korter... Maar het lost niets op =(
Offline Rens - 13/07/2006 01:29
Avatar van Rens Gouden medaille

Crew algemeen
Probeer dit eens:
  1. <?PHP
  2.  
  3. require ('config.inc.php');
  4.  
  5. if (!$rConnect = connect_sql_database ())
  6. {
  7. echo 'Kon geen verbinding maken';
  8. }
  9. elseif (!select_sql_database ($rConnect))
  10. {
  11. echo 'Kon geen database selecteren';
  12. }
  13. else
  14. {
  15. echo 'Alles goed, website weergeven';
  16. }
  17.  
  18. ?>


  1. <?PHP
  2.  
  3. $cfg_host = "localhost";
  4. $cfg_user = "nrzonline";
  5. $cfg_pass = "password";
  6. $cfg_db = "website";
  7.  
  8. require ('functions.inc.php');
  9.  
  10. ?>


  1. <?PHP
  2.  
  3. function connect_sql_database ()
  4. {
  5. global $cfg_host; global $cfg_user; global $cfg_pass;
  6.  
  7. return mysql_connect ($cfg_host, $cfg_user, $cfg_pass);
  8. }
  9.  
  10. function select_sql_database ($rResult)
  11. {
  12. global $cfg_db;
  13.  
  14. return mysql_select_db ($cfg_db, $rResult);
  15. }
  16.  
  17. ?>
Offline Nrzonline - 13/07/2006 01:32 (laatste wijziging 13/07/2006 01:41)
Avatar van Nrzonline PHP ver gevorderde resultaat blijft hetzelfde..

Access denied for user 'ODBC'@'localhost' (using password: NO)

/edit

Het zit hem wel ergens in index.php...
zelfs hetvolgende in index.php werke nieteens
  1. <?PHP
  2.  
  3. $var1 = "localhost";
  4. $var2 = "nrzonline";
  5. $var3 = "wachtwoord";
  6. $var4 = "website";
  7. mysql_connect ($var,$var2,$var3);
  8.  
  9. ?>


en in config.inc.php werkt dit wel gewoon..
maarja, dit is natuurlijk niet wat ik wil..
Offline xSc - 13/07/2006 10:55
Avatar van xSc Onbekend 'ODBC'@'localhost'

De gebruiker is dan:

ODBC

$var2 = "ODBC";

Toch? 
Offline Nrzonline - 13/07/2006 11:27 (laatste wijziging 13/07/2006 11:28)
Avatar van Nrzonline PHP ver gevorderde hehe nee, odbc heeft te maken met een connectie die niet door
komt. Hij probeert standaard 2 connecties:

Root zonder pass
ODBC zonder pass

dus krijg je ODBC@localhost (password: NO)
Offline xSc - 13/07/2006 11:39
Avatar van xSc Onbekend Oke, ik probeerde snel de situatie na te bootsen en toen kreeg ik dat dus niet, vandaar ;)
Offline Nrzonline - 13/07/2006 11:55
Avatar van Nrzonline PHP ver gevorderde Nee, ik krijg het normaal ook niet. Zo deed ik het bij mijn forum
ook ooit een keer, en dat werkte prima. Nu ik een andere Apache
webserver heb, gaat hij hem flippen (phpv 5.1.4 though..)
daarom vind ik het ook zo ontzettend vreemd..
Offline Rens - 13/07/2006 13:45
Avatar van Rens Gouden medaille

Crew algemeen
  1. <?PHP
  2.  
  3. $var1 = "localhost";
  4. $var2 = "nrzonline";
  5. $var3 = "wachtwoord";
  6. $var4 = "website";
  7. mysql_connect ($var,$var2,$var3);
  8.  
  9. ?>

Kijk nog eens goed naar de var. namen, nogal logisch dat je met dit een fout krijgt...
$var1 ==> $var...
Offline Thomas - 13/07/2006 14:02
Avatar van Thomas Moderator Heb je voor de database die je selecteert wel rechten ingesteld voor de user die je gebruikt?
Offline Nrzonline - 13/07/2006 14:15
Avatar van Nrzonline PHP ver gevorderde rensjeh, dat was als voorbeeld.. hoe een standaard connectje
eruit ziet snappie.. mjah forget about that ok? Die ik geprobeerd
had klopte wel, trust me ;)

FargorN: Zover ik weet, en heb ik ook gecontroleerd heeft die
gebruiker wel alle rechten, in alle tabellen.
Offline Rens - 13/07/2006 15:37
Avatar van Rens Gouden medaille

Crew algemeen
Bij alle 2 de functies, i.p.v. 'return FALSE;' eens zo:
echo MySQL_Error();
Kijken of je dan een error meer krijgt...
Offline Nrzonline - 13/07/2006 18:03
Avatar van Nrzonline PHP ver gevorderde nope geen extra error uitleg o.i.d... helemaal niets..
Offline Ibrahim - 13/07/2006 18:13 (laatste wijziging 13/07/2006 18:16)
Avatar van Ibrahim PHP expert je hebt volgens mij verkeerde gegevens ingevuld

als je wilt dat mysql die fout niet weergeeft zet er gewoon een @ voor de mysql_connect en mysql_select_db
Offline Nrzonline - 13/07/2006 18:41 (laatste wijziging 13/07/2006 18:42)
Avatar van Nrzonline PHP ver gevorderde Het gaat pas fout bij het uitvoeren bij een query. Dus hij heeft
wel een connectie opgebouwd:

Citaat:
MySQL Error:

Warning: mysql_query()
[function.mysql-query]: Access denied for user 'ODBC'@'localhost' (using password: NO) in D:ProgrammasXAMPPxampphtdocswebshopincludesfunctions.inc.php on line 45
Offline Ibrahim - 14/07/2006 00:23
Avatar van Ibrahim PHP expert waarom gebruik je gewoon niet de standaard functies van php ? waarom een hele functie, dat vraag ik me echt af...
Offline Nrzonline - 14/07/2006 01:09
Avatar van Nrzonline PHP ver gevorderde omdat ik templatepower gebruik. Zodra er geen connectie is
met het database een nette error weergeven in de include
van error.php (.tpl) mbv variabelen
Offline Thomas - 14/07/2006 09:33 (laatste wijziging 14/07/2006 09:33)
Avatar van Thomas Moderator Hmm, heb jij een user gemaakt door rechtstreeks mysql.db en mysql.user aan te passen, of heb je gebruik gemaakt van GRANT?

In het eerste geval moet je namelijk of de MySQL-server herstarten, of het commando FLUSH PRIVILEGES uitvoeren om de user in staat te stellen om met een database te werken (zonder de MySQL-server te herstarten).

Anders zou ik het ook niet weten - post hier, of als het erg veel code is op plaatscode.be, de code die je nu gebruikt?

Heb je ook al geprobeerd om een connectie te maken met je db en een db te selecteren zonder de functies die jij gebruikt? Hierbij kun je dan het beste ... or die(mysql_error()) zetten om snel inzicht te krijgen in de fouten die zich voordoen.

EDIT: Draait je MySQL-server uberhaupt wel?
Offline Nrzonline - 14/07/2006 10:40 (laatste wijziging 14/07/2006 10:41)
Avatar van Nrzonline PHP ver gevorderde Hehe ja, MySQL draait teneerste wel. Ten tweede heb ik het probleem
nu wat verder uitgezocht (vannacht). Ik heb het script nu ook
getest op mijn server, en daar heb ik precies hetzelfde. Me broer
om hulp gevraagd en hij heeft teneerste met het plaatsen
van mijn 2 connect functies in een class. Nu roep ik mijn class als
volgt aan:

mysql.class.php
  1. <?PHP
  2. class mysql
  3. {
  4. public function connect_sql_database ($cfg_host, $cfg_user, $cfg_pass)
  5. {
  6. if (mysql_connect ($cfg_host, $cfg_user, $cfg_pass))
  7. {
  8. return TRUE;
  9. }
  10. else
  11. {
  12. return FALSE;
  13. }
  14. }
  15.  
  16. public function select_sql_database ($cfg_db)
  17. {
  18. if (mysql_select_db ($cfg_db))
  19. {
  20. return TRUE;
  21. }
  22. else
  23. {
  24. return FALSE;
  25. }
  26. }
  27. }
  28. ?>


  1. <?PHP
  2. require ('includes/mysql.class.php');
  3. $mysql = new mysql ();
  4. $mysql -> connect_sql_database ("localhost", "nrzonline", "wachtwoord");
  5. $mysql -> select_sql_database ("webshop");
  6. ?>


Het is duidelijk geworden dat als ik mijn connect gegevens in
mijn config.inc.php plaats dat het gewoon allemaal perfect
werkt. Connectie wordt tot stand gebracht, alles kan worden
uitgeladen (server en localhost), maar plaats ik die connectie
gegevens (PRECIES ZOALS IN CONFIG.INC.PHP) in mijn index.php
werkt het direct al niet meer, wat ik echt super vreemd vind.
Offline Thomas - 14/07/2006 11:24
Avatar van Thomas Moderator Vaag.
Verbreek je ergens de connectie (mysql_close()) of maak je een anderen connectie aan (2e mysql_connect)?

Default wordt er altijd gecommuniceerd met de laatst geconnecte database, tenzij je de link_identifier die mysql_connect retourneert opslaat en deze gebruikt om aan te geven welke db je wilt aanspreken.
Offline Nrzonline - 14/07/2006 12:24
Avatar van Nrzonline PHP ver gevorderde Nee, er is geen andere connect in 1 van mijn files of wat dan ook.
Verder close ik ook niets. Gewoon 1 enkele connect die wel werkt
in config.inc.php maar niet op index.php :/
Offline Thomas - 14/07/2006 13:42
Avatar van Thomas Moderator Gebruik gewoon eens enkel mysql_connect en mysql_select_db, met direct hierin de gegevens in string-vorm.
Zo kun je namelijk nagaan of het aan de database ligt, of aan de functies die jij introduceert (die verder niet zoveel doen overigens).

Maak dus gebruik van een "separation of concerns". Gooi alles weg wat het oplossen van je probleem moeilijker maakt, en werk dan langzaam terug naar je huidige niet-werkende situatie, want dit schiet echt niet op.
Offline Ibrahim - 14/07/2006 13:49
Avatar van Ibrahim PHP expert
  1. <?php
  2.  
  3. // config gegevens
  4.  
  5. $_connect_to_MySQL = mysql_connect( /* connectie */ );
  6. $_select_db = mysql_select_db( $_connect_to_MySQL );
  7.  
  8. if($_connect_to_MySQL && $_select_db)
  9. {
  10. $tpl->newBlock('Error');
  11. $tpl->assign('mysql_error', mysql_error());
  12. }
  13. ?>


zo kun je het in je template zetten...
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.282s