Fout in query, maar wat?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Thomas van Broekhoven

Thomas van Broekhoven

08/05/2008 19:46:00
Quote Anchor link
Beste PHPers,

Ik stuit op een probleempje. De volgende query geeft een error maar ik zie niet wat er fout is gegaan:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$verloopdatum
= mysql_query("
SELECT (pre_datum + INTERVAL 20 days) AS verloopdate FROM users WHERE gebruikersnaam = '"
. $_SESSION['user3'] . "'");
        if($vdate = mysql_query($verloopdatum)) {
            while ($row4 = mysql_fetch_object($vdate)) {
               $verloop= ''.$row4->verloopdate.'';
            }

            mysql_free_result($vdate);
        }
else {
            echo '<br>Fout tijdens uitvoeren van de query';
               }
    
?>


Echter krijg ik de hele leuke error:
Fout tijdens uitvoeren van de query

Helaas zie ik zelf niet wat er nou fout is gegaan. Kan een van jullie me helpen? Alvast bedankt!
 
PHP hulp

PHP hulp

14/05/2024 19:08:07
 
Frank -

Frank -

08/05/2008 19:49:00
Quote Anchor link
Thomas schreef op 08.05.2008 19:46:
Echter krijg ik de hele leuke error:
Fout tijdens uitvoeren van de query

Helaas zie ik zelf niet wat er nou fout is gegaan. Kan een van jullie me helpen? Alvast bedankt!
Gek hé, deze waardeloze foutmelding zet je er zelf neer...

Wat dacht je van de functie mysql_error() om de échte melding te achterhalen?
 
Erwin Nieuwenhuis

Erwin Nieuwenhuis

08/05/2008 19:50:00
Quote Anchor link
ikzelf gebruik mysqli, en heb nooit mysql gebruikt.


bij mysqli kun je gebruik maken van trigger_error, en volgens mij bij mysql ook. dan kun je een mysql error weergeven. en daar staat de fout in.

Edit:
die bedoel ik :)
Gewijzigd op 01/01/1970 01:00:00 door Erwin Nieuwenhuis
 
Thomas van Broekhoven

Thomas van Broekhoven

08/05/2008 19:53:00
Quote Anchor link
Ok, de if/else weggehaald.

Dan krijg je het volgende:

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /storage/mijndomein/users/080888/public/sites/blog.fressh.nl/memberkopen.php on line 41

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /storage/mijndomein/users/080888/public/sites/blog.fressh.nl/memberkopen.php on line 44

K heb nu deze code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$verloopdatum
= mysql_query("SELECT (pre_datum + INTERVAL 20 days) AS verloopdate FROM users WHERE gebruikersnaam = '" . $_SESSION['user3'] . "'");
            while ($row4 = mysql_fetch_object($vdate)) {
               $verloop= ''.$row4->verloopdate.'';
            }

            mysql_free_result($vdate);
?>


Regel 41 en 44 zijn de 3de en 6de regel hierboven.. Maar dat kon je raden.
Gewijzigd op 01/01/1970 01:00:00 door Thomas van Broekhoven
 
Frank -

Frank -

08/05/2008 19:56:00
Quote Anchor link
Repeat:
Quote:
Wat dacht je van de functie mysql_error() om de échte melding te achterhalen?
 
Erwin Nieuwenhuis

Erwin Nieuwenhuis

08/05/2008 19:57:00
Quote Anchor link
waar haal je $vdate eigenlijk vandaan?
 
Thomas van Broekhoven

Thomas van Broekhoven

08/05/2008 19:59:00
Quote Anchor link
Je hebt gelijk, sorry. Dan krijg ik de volgende error:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'days) AS verloopdate FROM users WHERE gebruikersnaam = 'Thomas'' at line 1
 
Frank -

Frank -

08/05/2008 20:00:00
Quote Anchor link
erwin schreef op 08.05.2008 19:57:
waar haal je $vdate eigenlijk vandaan?
Scherp opgemerkt!

Er klopt geen hout van de code.
 
Thomas van Broekhoven

Thomas van Broekhoven

08/05/2008 20:04:00
Quote Anchor link
Dat is nog van de if/else statement.
vergeten aan te passen...

Nu heb ik dit dan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
        $verloopdatum
= "SELECT (pre_datum + INTERVAL 20 days) AS verloopdate FROM users WHERE gebruikersnaam = '" . $_SESSION['user3'] . "'";
        mysql_query($verloopdatum) or die(mysql_error());
            while ($row = mysql_fetch_object($verloopdatum)) {
               $verloop= ''.$row->verloopdate.'';
            }

            mysql_free_result($verloopdatum);
?>


Maar nu krijg ik nog steeds dezelfde error.

EDIT: 't Moest DAY zijn ipv DAYS, maar nu krijg ik weer de errors eerder genoemd:

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /storage/mijndomein/users/080888/public/sites/blog.fressh.nl/memberkopen.php on line 42

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /storage/mijndomein/users/080888/public/sites/blog.fressh.nl/memberkopen.php on line 45
Gewijzigd op 01/01/1970 01:00:00 door Thomas van Broekhoven
 
Erwin Nieuwenhuis

Erwin Nieuwenhuis

08/05/2008 20:12:00
Quote Anchor link
komt er wel resultaat uit je query??

foutafhandeling.
 
Joren de Wit

Joren de Wit

08/05/2008 20:14:00
Quote Anchor link
Ja, $verloopdatum is ook je sql query en niet de resultaat set. In de mysql_fetch_* functies moet je natuurlijk wel het resultaat van een mysql_query() gebruiken...

Dus:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$sql
= "Je query";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
?>

En dan uiteraard nog de foutafhandeling toepassen.
 
Thomas van Broekhoven

Thomas van Broekhoven

08/05/2008 20:20:00
Quote Anchor link
Ik denk dat dat een heel goed punt is, ik heb nu dit dan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
        $verloopdatum
= "SELECT (pre_datum + INTERVAL 20 day) AS verloopdate FROM users WHERE gebruikersnaam = '" . $_SESSION['user3'] . "'";
        $test = mysql_query($verloopdatum) or die(mysql_error());
         while ($row = mysql_fetch_assoc($test)) {
               $verloop= ''.$row->verloopdate.'';
               echo ($verloop);
         }

         mysql_free_result($test);
?>


Ik krijg nu alleen nog deze error:
Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /storage/mijndomein/users/080888/public/sites/blog.fressh.nl/memberkopen.php on line 46

Ik denk dat dat komt omdat er nu mysql_fetch_assoc() gebruikt wordt. Maar ik ben nog niet zo goed in SQL enzo. Dus heb je ook enig idee waar deze error dan aan kan liggen. Alvast bedankt!
Gewijzigd op 01/01/1970 01:00:00 door Thomas van Broekhoven
 
Erwin Nieuwenhuis

Erwin Nieuwenhuis

08/05/2008 20:21:00
Quote Anchor link
kijk nog eens goed, wat staat er in $verloopdatum? kun je niet beter mysql_free_result($test); gebruiken?

Edit:
gooi gelijk even die() eruit, en ga wat aan foutafhandeling doen
Gewijzigd op 01/01/1970 01:00:00 door Erwin Nieuwenhuis
 
Thomas van Broekhoven

Thomas van Broekhoven

08/05/2008 20:22:00
Quote Anchor link
Ja daar kwam ik ook al achter. Had het al snel gewijzigd, heeeel dom.. Maar de error is weg maar ik krijg vreemd genoeg geen resultaat.
 
Erwin Nieuwenhuis

Erwin Nieuwenhuis

08/05/2008 20:24:00
Quote Anchor link
ik weet niet wat mysql_free_result() doet, maar uit je while loop komt idd geen resultaat.

je echo't namelijk niks


Edit:
ik heb het even nagelezen, en mysql_free_result() gooit je data weg. ik snap niet wanneer/waarom je dit wilt gebruiken..
Gewijzigd op 01/01/1970 01:00:00 door Erwin Nieuwenhuis
 
Thomas van Broekhoven

Thomas van Broekhoven

08/05/2008 20:27:00
Quote Anchor link
$verloop= ''.$row->verloopdate.'';
echo ($verloop);

Is toch een echo..
 
Erwin Nieuwenhuis

Erwin Nieuwenhuis

08/05/2008 20:28:00
Quote Anchor link
*schaam*

niet gelezen..

maar voeg is een if/else toe, waarbij je de resultaten telt.
 
Thomas van Broekhoven

Thomas van Broekhoven

08/05/2008 20:33:00
Quote Anchor link
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
<?php
        $verloopdatum
= "SELECT (pre_datum + INTERVAL 20 DAY) AS verloopdate FROM users WHERE gebruikersnaam = '" . $_SESSION['user3'] . "'";
        $test = mysql_query($verloopdatum) or die(mysql_error());
         while ($row3 = mysql_fetch_assoc($test)) {
               $verloop = ''.$row3->verloopdate.'';
         }

         mysql_free_result($test);
        
        if (empty($verloop)){
        echo('false');
        }
else {
        echo('true');
        }

?>


Resultaat: False

Er is dus helemaal niks uit te lezen,, terwijl er toch echt een tijd staat voor: pre_datum
 
Erwin Nieuwenhuis

Erwin Nieuwenhuis

08/05/2008 20:36:00
Quote Anchor link
Quote:
Er is dus helemaal niks uit te lezen,, terwijl er toch echt een tijd staat voor: pre_datum

er wordt iig niks uitgelezen.

heb je er een tijd staan, of staat het in een datetime veld?

verder kun je met mysql_num_rows de resultaten tellen.
 
Thomas van Broekhoven

Thomas van Broekhoven

08/05/2008 20:45:00
Quote Anchor link
Ja. even kijken de tijd die er in staat is:
2008-05-08 20:39:26

En ik gebruik idd Datetime

Nou zou die eigk dan + 20 dagen moeten doen. maar dat doet die zo te zien niet.
 
Erwin Nieuwenhuis

Erwin Nieuwenhuis

08/05/2008 20:48:00
Quote Anchor link
dat gaat m'n petje te boven, zoveel weet ik niet van SQL af.

lees dit even.
 

Pagina: 1 2 volgende »



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.