Wie wil dit script voor database connectie nakijken?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Kvdd

kvdd

27/07/2007 09:46:00
Quote Anchor link
Beste luitjes,

Zojuist heb ik het volgende script gemaakt voor een database connectie:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
# vars to connect to database, neatly to adapt to your own settings
$database             = "";
$mysqlhost             = "localhost";
$mysql_username     = "";
$mysql_password        = "";

# connect to a database
if (@mysql_connect($mysql_host, $mysql_username, $mysql_password)) {
    if (!mysql_select_db($database)) {
        # if database is not selected, create database
        mysql_query("CREATE DATABASE {$database}");
        # if table do not exist, create table
        if (!@mysql_query("INSERT INTO table (user_urls) VALUES ({$curr_url})  ")) {
            mysql_query("CREATE TABLE table (
            user_urls VARCHAR(500) NOT NULL)"
);
        }
    }
else {
        echo "Database is not selected" . mysql_error() ."";
    }
}

?>

Zover ik het kan bekijken zie ik geen fout hierin, maar het werkt niet, dus het moet wel :-)

Iemand?
Gewijzigd op 01/01/1970 01:00:00 door Kvdd
 
PHP hulp

PHP hulp

08/11/2024 11:46:40
 
Joren de Wit

Joren de Wit

27/07/2007 09:53:00
Quote Anchor link
@-jes om je fouten te onderdrukken? Vind je het gek dat je niet ziet wat er eventueel fout gaat. Sloop die tijdens het debuggen dus allereerst uit je code.

En daarnaast wil je eigenlijk ook niet in een script dat er zomaar databases of tabellen aangemaakt worden. Die acties zou je eventueel eenmalig in een config script op kunnen nemen, maar dat is dan ook alles.
 
Kvdd

kvdd

27/07/2007 10:26:00
Quote Anchor link
Blanche schreef op 27.07.2007 09:53:
@-jes om je fouten te onderdrukken? Vind je het gek dat je niet ziet wat er eventueel fout gaat. Sloop die tijdens het debuggen dus allereerst uit je code.

En daarnaast wil je eigenlijk ook niet in een script dat er zomaar databases of tabellen aangemaakt worden. Die acties zou je eventueel eenmalig in een config script op kunnen nemen, maar dat is dan ook alles.


Oke oke, my bad :-) zo programmeer ik meestal, omdat de gebruiker niet een lijst foutmeldingen moet krijgen. Maar gelijk heb je.

Dus niemand ziet hier iets fout in?
ff die @tjes eruit halen..
 
Paul K

Paul K

27/07/2007 10:29:00
Quote Anchor link
kvdd schreef op 27.07.2007 10:26:
Oke oke, my bad :-) zo programmeer ik meestal, omdat de gebruiker niet een lijst foutmeldingen moet krijgen. Maar gelijk heb je.

Ehm juist? Je moet gewoon netjes scripten ;)
Gewijzigd op 01/01/1970 01:00:00 door Paul K
 
Joren de Wit

Joren de Wit

27/07/2007 10:32:00
Quote Anchor link
Quote:
(...) omdat de gebruiker niet een lijst foutmeldingen moet krijgen
Tja, vang de fouten dan gewoon netjes af en maak er nette foutmeldingen van. @-tjes zijn niet verkeerd, als je maar wel zorgt dat je eventuele fouten die optreden afvangt. En dat doe je nu ook niet! (Ik mis bijvoorbeeld het else statement behorende bij je eerste if)
 
Kvdd

kvdd

27/07/2007 10:34:00
Quote Anchor link
Blanche schreef op 27.07.2007 10:32:
(Ik mis bijvoorbeeld het else statement behorende bij je eerste if)


?? een if hoeft toch helemaal niet persee een else te hebben?

if (dit is waar) doe dan dit...

ik vind het altijd juist handig, met of zonder else

wat doe ik dan fout?
 
Joren de Wit

Joren de Wit

27/07/2007 10:37:00
Quote Anchor link
Ja klopt, maar als je een @ in je if-statetment gebruikt, worden eventuele fouten dus niet weergegeven. Als je if-statement dus niet voldoet omdat de verbinding niet gelegd kan worden, moet je in dat geval wel een else statement hebben waarin je een foutmelding kunt geven!

ps. Een voorbeeldje:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
if(!@mysql_connect('host', 'user', 'pass'))
{

    echo 'Database verbindingsfout: '.mysql_error();
}

else
{
    // ...
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
 
Kvdd

kvdd

27/07/2007 10:49:00
Quote Anchor link
Blanche schreef op 27.07.2007 10:37:
Ja klopt, maar als je een @ in je if-statetment gebruikt, worden eventuele fouten dus niet weergegeven. Als je if-statement dus niet voldoet omdat de verbinding niet gelegd kan worden, moet je in dat geval wel een else statement hebben waarin je een foutmelding kunt geven!

ps. Een voorbeeldje:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
if(!@mysql_connect('host', 'user', 'pass'))
{

    echo 'Database verbindingsfout: '.mysql_error();
}

else
{
    // ...
}
?>


Okay, bedoel je dat, ik dacht dat jij bedoelde dat een if persee een else moet hebben. Maar dat is natuurlijk niet zo.

Ik bericht zo nog even wat ik fout heb gedaan, waarom het nu niet werkt.
 
Kvdd

kvdd

27/07/2007 11:04:00
Quote Anchor link
(...)
Edit: laat maar, de if's en else's werken mekaar gruwelijk tegen.

Sorry voor het in beslag leggen van jullie tijd!
Gewijzigd op 01/01/1970 01:00:00 door kvdd
 
Joren de Wit

Joren de Wit

27/07/2007 11:07:00
Quote Anchor link
Die echo op regel 20 klopt niet, dat is immers de succesvariant van het selecteren van de database. Op regel 11 controleer je immers of dat mislukt is.

Verder voer je nergens meer controles uit op de queries die je vanaf regel 13 gebruikt. Dat moet je natuurlijk wel even doen.
 
Kvdd

kvdd

27/07/2007 11:31:00
Quote Anchor link
Blanche schreef op 27.07.2007 11:07:
Die echo op regel 20 klopt niet, dat is immers de succesvariant van het selecteren van de database. Op regel 11 controleer je immers of dat mislukt is.

Verder voer je nergens meer controles uit op de queries die je vanaf regel 13 gebruikt. Dat moet je natuurlijk wel even doen.


Ja, je hebt helemaal gelijk, dat bedoelde ik ook met mijn vorige post.
Hier heb je mn code op dit moment:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
# vars to connect to database, neatly to adapt to your own settings
$database             = "";
$mysql_host         = "localhost";
$mysql_username     = "";
$mysql_password        = "";

# connect to a database
if (mysql_connect($mysql_host, $mysql_username, $mysql_password)) {
    if (!mysql_select_db($database)) {
        # if database is not selected, create database
        mysql_query("CREATE DATABASE {$database}");
        }
else{
            # if table does not exist, create table
            if (!mysql_query("INSERT INTO table(user_urls)VALUES({$curr_url})")) {
                echo mysql_error();
                mysql_query("CREATE TABLE table (
                user_urls VARCHAR(500) NOT NULL)"
);
            }
        }
    }
else{
        echo mysql_error();
}

?>


Zoals je ziet is de foutcontrole op dit moment beter afgehandeld, en het script werkt helemaal. Dat deed het al, maar de else stond verkeerd, hij gaf aan dat de verbinding niet goed was door een zelfgeplaatste echo. Terwijl het script dus juist functioneerde!

Bedankt allemaal! :-)
Gewijzigd op 01/01/1970 01:00:00 door kvdd
 
- SanThe -

- SanThe -

27/07/2007 13:29:00
Quote Anchor link
En die 'CREATE' queries hoef je dus weer niet te controleren.
Mijn Tip: Altijd alles 'even checken'.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.