php query geeft null sql commando klopt

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

RareAMV Unknown

RareAMV Unknown

16/11/2013 20:29:56
Quote Anchor link
Ik heb een site waarbij ik data opvraag van mijn database, om dan die data te vergelijken met iets en dan de data die er mee overeenkomt te weergeven, maar in plaats daarvan geeft de query die ik uitvoer null, en ik zou niet weten waarom. Ik heb de sql code uitgevoerd in php my admin, en daar werkt hij gewoon.

P.S. ik ben nog maar een beginner met php en mysql, dus er zullen hier en daar wat foutjes zitten, of dingen die beter kunnen, ik weet het, maar kraak me er niet op af. Ik heb daar al eerder ervaring mee gehad.

Als ik dit hier verkeerd post, zou ik graag willen weten waar ik het moet herposten,

Al vast bedankt.

php:

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
25
26
27
28
29
30
31
32
33
34
35
$filename = $_POST['filename'];



//variable which let you connect to the database
$con = mysqli_connect("127.0.0.1","root","xxxx","xxxx");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  };

$sql = "SELECT * FROM userwag WHERE offerweb = '" . $filename . "';";
$result = mysqli_query($con, $sql);

if($result !== false)
{
while($row = mysqli_fetch_array($result));
{    
$username = $row['Username'];
$class = $row['Class'];
$niveau = $row['Niveau'];
$vor = $row['vor'];
$when_added = $row['When_Added'];
$description = $row['Description'];
}
if($row == null)
{
    $err = 'there aint no data in this query...';
}
    else
{
    $err = 'the query is working, no problems here';
}
}


het idee was dat ik met die variabelen een stukje html aanvul met die gegevens.

filename komt van een ander script, heb de query met die filename getest(heb de filename inclusief de sql code geëchod op de html pagina, om daarna in phpadmin uit te voeren).
Gewijzigd op 16/11/2013 20:30:14 door RareAMV Unknown
 
PHP hulp

PHP hulp

21/11/2024 18:13:45
 
Pipo Clown

Pipo Clown

16/11/2013 20:50:28
Quote Anchor link
Je doorloopteen Whle-loop
Deze wordt doorlopen net zo lang totdat $row null is.

Vervolgens ga je $row op null testen, $row zal op die plaats altijd nul zijn.
Wanneer je wilt kijken of de query resultaat geeft zou ik binnen de while lus een echo plaatsen van één van de velden.
Pas ook de volgende regeleven aan :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if($result !== false)

in:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if($result != false)


Volgens mij zitten er nog wel een paar dingetjes in maar dit zijn de belangrijkste
Gewijzigd op 16/11/2013 20:54:24 door Pipo Clown
 
- SanThe -

- SanThe -

16/11/2013 21:19:12
Quote Anchor link
*** Bestaat de POST wel?
$filename = $_POST['filename'];

*** De query bevat onbeveiligde userinput en is dus lek.
$sql = "SELECT * FROM userwag WHERE offerweb = '" . $filename . "';";

*** Is gewoon goed zo
if($result !== false)

*** Je overschrijft steeds de $vars.
while($row = mysqli_fetch_array($result));
{
$username = $row['Username'];
$class = $row['Class'];
$niveau = $row['Niveau'];
$vor = $row['vor'];
$when_added = $row['When_Added'];
$description = $row['Description'];
}


*** $row is niet meer in de while() dus is ie leeg/null
if($row == null)
 
RareAMV Unknown

RareAMV Unknown

16/11/2013 23:08:13
Quote Anchor link
Bedankt allemaal voor de reacties, ik had volgens mij al een keer zonder de loop geprobeerd, toen werkte het ook niet, de $_POST bestaat, gezien ik die kan echo'en op de html pagina zelf.

ik heb dus de code aangepast hierna:

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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
//script voor de opmaak voor de opmaak van elk nieuwe offer html pagina.
$filename = $_POST['filename'];



//variable which let you connect to the database
$con = mysqli_connect("127.0.0.1","root","root","matchoffer");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  };

$sql = "SELECT Username, Niveau, Class, vor, When_Added, Offerweb FROM userwag WHERE Offerweb = '" . $filename . "';";
$result = mysqli_query($con, $sql);
//ben niet zeker of dit zo werkt:
$row = mysqli_fetch_array($result);
//dit had ik bedacht zodat hij als hij geen null returned, hij verder gaat met checken van de sql code en connectie, klopt die niet dan geeft hij dat appart ook aan.
if($row != false)
{
    if($result != false)
    {
    
        $username = $row['Username'];
        $class = $row['Class'];
        $niveau = $row['Niveau'];
        $vor = $row['vor'];
        $when_added = $row['When_Added'];
        $description = $row['Description'];
        $err = 'query did not return null, there is no problem with the sql';
    }
    else
    {
    $err = 'there is a problem with the sql code/connection';
    }
}
else
{
$err = 'the query is still returns null, why?';
}


Het werkt nog steeds niet, ik krijg weer dat de query null terugstuurt, ik weet zeker dat ik een voorhanden liggende fout maak... wat doe ik verkeerd...?

Edit: Ik heb misschien een oorzaak, maar ik weet het niet zeker, laat ik proberen het simpel en globaal uit te leggen hoe ik het precies heb nu met het versturen en ophalen van data op het moment dat er data verzonden wordt uit een formulier naar de database:

data gaat uit form naar script(1) die de data verstuurd naar 2 andere scripts(2 en 3) met curl(werkt): script 2 verstuurt data naar de database, en stuurt daarbij ook de bestandsnaam van de aangemaakte html bestand in script 3 naar de database(werkt), script 3 maakt een html pagina aan in map waarvan de naam voor een klein deel uit de data van de form bestaat(werkt), script 3 verstuurt de bestandsnaam naar script 4(werkt), en stuurt je terug naar de homepagina(werkt): script 4 haalt data uit de database, doormiddel het vergelijken van de bestandsnaam van de gemaakte bestand in script 3 en de bestandsnaam in de database verstuurd door script 2(dit doe ik zodat je maar 1 resultaat kunt krijgen, gezien de bestandsnamen uniek zijn)(dit gedeelte werkt dus niet).

Dit is in globaal hoe het er uit moet komen te zien,ik weet dat het hoogst waarschijnlijk 10x makkelijker kan, maar ik ben nu eenmaal iemand die vaak (te) moeilijk denkt. Het laatste gedeelte gaat dus fout, kan het zijn dat de database de informatie uit script 2 nog aan het verwerken is op het moment dat script 4 het probeert op te halen?
Gewijzigd op 16/11/2013 23:30:14 door RareAMV Unknown
 
Pipo Clown

Pipo Clown

16/11/2013 23:33:57
Quote Anchor link
Je test $row != false,

$row is een array met de inhoud van de eerste rij uit je database resultaat.
Geen idee hoe PHP hier precies mee om gaat maar $row is in ieder geval geen boolean.

Ik heb onderstaande code niet getest maar probeer het er eens mee:

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
25
26
27
28
29
//script voor de opmaak voor de opmaak van elk nieuwe offer html pagina.
$filename = $_POST['filename'];



//variable which let you connect to the database
$con = mysqli_connect("127.0.0.1","root","root","matchoffer");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  };

$sql = "SELECT Username, Niveau, Class, vor, When_Added, Offerweb FROM userwag WHERE Offerweb = '" . $filename . "';";
$result = mysqli_query($con, $sql);
//ben niet zeker of dit zo werkt:
//$row = mysqli_fetch_array($result);
//dit had ik bedacht zodat hij als hij geen null returned, hij verder gaat met checken van de sql code en connectie, klopt die niet dan geeft hij dat appart ook aan.

while ($row = mysqli_fetch_array($result))    {
echo 'Gebruiker : '.$row['username'].'<br.';
    $username = $row['Username'];
    $class = $row['Class'];
    $niveau = $row['Niveau'];
    $vor = $row['vor'];
    $when_added = $row['When_Added'];
    $description = $row['Description'];
    $err = 'query did not return null, there is no problem with the sql';
}
Gewijzigd op 16/11/2013 23:35:12 door Pipo Clown
 
Local Dev

Local Dev

16/11/2013 23:47:05
Quote Anchor link
Waarom wordt altijd het escapen van verstuurde data vergeten? VERTROUW NOOIT, MAAR DAN OOK ECHT NOOIT DATA VERSTUURD DMV EEN FORMULIER!! Tenzij je wilt dat jouw website gehackt wordt?
 
Pipo Clown

Pipo Clown

16/11/2013 23:55:19
Quote Anchor link
Local Dev op 16/11/2013 23:47:05:
Waarom wordt altijd het escapen van verstuurde data vergeten? VERTROUW NOOIT, MAAR DAN OOK ECHT NOOIT DATA VERSTUURD DMV EEN FORMULIER!! Tenzij je wilt dat jouw website gehackt wordt?


Omdat het voor mij prioriteit heeft om de werkelijke problemen eerst op te lossen.

Eventuele beveiliging kan daarna redelijk simpel aangepakt worden.

Overigens gaat het hier om een select waar verder geen variabelen in voorkomen dus dan ben ik niet zo heel erg bang voor injectie oid
Gewijzigd op 16/11/2013 23:57:13 door Pipo Clown
 
Local Dev

Local Dev

17/11/2013 00:16:16
Quote Anchor link
Quote:
Eventuele beveiliging kan daarna redelijk simpel aangepakt worden.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$filename = $_POST['filename'];

Blijkbaar wordt dit niet in de query gebruikt?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$sql = "SELECT Username, Niveau, Class, vor, When_Added, Offerweb FROM userwag WHERE Offerweb = '" . $filename . "';";


Het lijkt me wanneer je iemand helpt, je ook wijst op de gevaren in de code? Inplaats daarvan schrijf je een scriptje waarin dit ook maar overgeslagen wordt :D


Toevoeging op 17/11/2013 00:26:35:

Local Dev op 17/11/2013 00:16:16:
Quote:
Eventuele beveiliging kan daarna redelijk simpel aangepakt worden.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$filename = $_POST['filename'];

Blijkbaar wordt dit niet in de query gebruikt?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$sql = "SELECT Username, Niveau, Class, vor, When_Added, Offerweb FROM userwag WHERE Offerweb = '" . $filename . "';";


Het lijkt me wanneer je iemand helpt, je ook wijst op de gevaren in de code? Inplaats daarvan schrijf je een scriptje waarin dit ook maar overgeslagen wordt :D

Controleer altijd op de volgende punten:
- is het formulier echt verzonden op de website zelf
- escape alle data (vertrouw niemand)

Toevoeging op 17/11/2013 00:30:58:

Local Dev op 17/11/2013 00:16:16:
Quote:
Eventuele beveiliging kan daarna redelijk simpel aangepakt worden.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$filename = $_POST['filename'];

Blijkbaar wordt dit niet in de query gebruikt?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$sql = "SELECT Username, Niveau, Class, vor, When_Added, Offerweb FROM userwag WHERE Offerweb = '" . $filename . "';";


Het lijkt me wanneer je iemand helpt, je ook wijst op de gevaren in de code? Inplaats daarvan schrijf je een scriptje waarin dit ook maar overgeslagen wordt :D


Toevoeging op 17/11/2013 00:26:35:

Local Dev op 17/11/2013 00:16:16:
Quote:
Eventuele beveiliging kan daarna redelijk simpel aangepakt worden.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$filename = $_POST['filename'];

Blijkbaar wordt dit niet in de query gebruikt?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$sql = "SELECT Username, Niveau, Class, vor, When_Added, Offerweb FROM userwag WHERE Offerweb = '" . $filename . "';";


Het lijkt me wanneer je iemand helpt, je ook wijst op de gevaren in de code? Inplaats daarvan schrijf je een scriptje waarin dit ook maar overgeslagen wordt :D

Controleer altijd op de volgende punten:
- is het formulier echt verzonden op de website zelf
- escape alle data (vertrouw niemand)




Toevoeging op 17/11/2013 00:33:04:

Quote:
Eventuele beveiliging kan daarna redelijk simpel aangepakt worden.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$filename = $_POST['filename'];

Blijkbaar wordt dit niet in de query gebruikt?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$sql = "SELECT Username, Niveau, Class, vor, When_Added, Offerweb FROM userwag WHERE Offerweb = '" . $filename . "';";


Het lijkt me wanneer je iemand helpt, je ook wijst op de gevaren in de code? Inplaats daarvan schrijf je een scriptje waarin dit ook maar overgeslagen wordt :D

Controleer altijd op de volgende punten:
- is het formulier echt verzonden op de website zelf
- escape alle data (vertrouw niemand)

Toevoeging op 17/11/2013 00:34:28:

Quote:
Eventuele beveiliging kan daarna redelijk simpel aangepakt worden.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$filename = $_POST['filename'];

Blijkbaar wordt dit niet in de query gebruikt?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$sql = "SELECT Username, Niveau, Class, vor, When_Added, Offerweb FROM userwag WHERE Offerweb = '" . $filename . "';";


Het lijkt me wanneer je iemand helpt, je ook wijst op de gevaren in de code? Inplaats daarvan schrijf je een scriptje waarin dit ook maar overgeslagen wordt :D

Controleer altijd op de volgende punten:
- is het formulier echt verzonden op de website zelf
- escape alle data (vertrouw niemand)

Toevoeging op 17/11/2013 00:36:13:

Local Dev op 17/11/2013 00:16:16:
Quote:
Eventuele beveiliging kan daarna redelijk simpel aangepakt worden.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$filename = $_POST['filename'];

Blijkbaar wordt dit niet in de query gebruikt?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$sql = "SELECT Username, Niveau, Class, vor, When_Added, Offerweb FROM userwag WHERE Offerweb = '" . $filename . "';";


Het lijkt me wanneer je iemand helpt, je ook wijst op de gevaren in de code? Inplaats daarvan schrijf je een scriptje waarin dit ook maar overgeslagen wordt :D


Toevoeging op 17/11/2013 00:26:35:

Controleer altijd op de volgende punten:
- is het formulier echt verzonden op de website zelf
- escape alle data (vertrouw niemand)


Toevoeging op 17/11/2013 00:39:04:

lol, wanneer ik mijn bericht aanpas, wordt mijn eerder geplaatste bericht x * de herhaling ..

Toevoeging op 17/11/2013 00:40:41:

Local Dev op 17/11/2013 00:16:16:
Quote:
Eventuele beveiliging kan daarna redelijk simpel aangepakt worden.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$filename = $_POST['filename'];

Blijkbaar wordt dit niet in de query gebruikt?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$sql = "SELECT Username, Niveau, Class, vor, When_Added, Offerweb FROM userwag WHERE Offerweb = '" . $filename . "';";


Het lijkt me wanneer je iemand helpt, je ook wijst op de gevaren in de code? Inplaats daarvan schrijf je een scriptje waarin dit ook maar overgeslagen wordt :D

Controleer altijd op de volgende punten:
- is het formulier echt verzonden op de website zelf
- escape alle data (vertrouw niemand)

lol, wanneer ik mijn bericht aanpas, wordt mijn eerder geplaatste bericht x * de herhaling ..
 
RareAMV Unknown

RareAMV Unknown

17/11/2013 11:14:41
Quote Anchor link
Pipo Clown op 16/11/2013 23:33:57:
Je test $row != false,

$row is een array met de inhoud van de eerste rij uit je database resultaat.
Geen idee hoe PHP hier precies mee om gaat maar $row is in ieder geval geen boolean.

Ik heb onderstaande code niet getest maar probeer het er eens mee:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
while ($row = mysqli_fetch_array($result))    {
echo 'Gebruiker : '.$row['username'].'<br.';
    $username = $row['Username'];
    $class = $row['Class'];
    $niveau = $row['Niveau'];
    $vor = $row['vor'];
    $when_added = $row['When_Added'];
    $description = $row['Description'];
    $err = 'query did not return null, there is no problem with the sql';
}



Bedankt voor de reactie,

Ik heb je code getest, maar het werkte ook niet, dus ben ik php.net nog maar eens gaan kijken bij mysqli_fetch_array(), en ik las dit:
The following functions return NULL when no more data is available in the result set (ext/mysql's functions return FALSE).

- mysqli_fetch_row()
- mysqli_fetch_array()
- mysqli_fetch_assoc()

dat betekent volgens mij dat ik in mijn php niets verkeerd doe, maar dat de sql query geen data terug stuurt, ik heb ze alle drie geprobeerd, en allemaal geven ze null. Dus..... mijn php werkt, de sql code hoort te werken, maar werkt niet....? iemand enig idee waarom? in tussen ga ik het moeilijk doen en ga de data gebruiken vanuit de form voor de html pagina(verzenden van script naar script d.m.v. curl post optie...)
 
Pipo Clown

Pipo Clown

17/11/2013 11:46:23
Quote Anchor link
Gezien de manier waarop mensen hier met elkaar om gaan heb ik besloten om dit forum te verlaten.

Succes.
 
- SanThe -

- SanThe -

17/11/2013 12:19:43
Quote Anchor link
Als de while() geen data geeft en de query is gelukt dan is er blijkbaar niets gevonden.
 



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.