Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.

SQL query op scherm toveren

Pagina: 1
Acties:
  • 704 views

  • Vinze
  • Registratie: Augustus 2006
  • Laatst online: 16-11 21:44
Beste tweakers/programmers,

Ik heb hier een php script om heel simpel wat gegevens uit een database op te vragen, helaas wil dit totaal niet lukken. Volgens het schoolboek PHP Applicatieontwikkeling van Peter Kassenaar zitten er geen fouten in. Ik krijg ook geen errors te zien, maar als ik het script start blijft de browser oneindig laden tot er een time out komt.

Iemand die me hieruit kan helpen?
Het gaat om het volgende stukje script:

PHP:
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
41
42
43
<?php

include ('connect.php');

/*---Het volgende staat in connect.php----
$host       = '127.0.0.1';
$port           = '1337';
$gebruiker  = 'root';
$wachtwoord = 'geheim';
$database   = 'binair';
--------------------------------------------*/

// Query invoeren
$query  = "SELECT * FROM omrekenen ORDER BY 'date'";

// Verbinding tot stand brengen
$mysqli = new mysqli ($host, $gebruiker, $wachtwoord, $database,$port);

//Controleren of de database geopend kan worden
$mysqli ->select_db($database);

//De Query uitvoeren
$result = $mysqli->query($query);

//Resultaten naar het scherm schrijven
//  echo "<table>";
         while ($rij = $result->fetch_array()){
            echo "naam: {$rij['name']}";
            }
/*          "<tr>
                <td>    {$rij['name']}  </td>
                <td>    {$rij['date']}      </td>
                <td>    {$rij['dec_getal']} </td>
                <td>    {$rij['bin_getal']} </td>
            </tr>"; 
        }
    echo "</table>";
Tabel gebruik ik hier nog niet i.v.m troubleshooten
*/

$mysqli->close();

?>


De error die ik na 30 seconden krijg:
Warning: mysqli::mysqli() [function.mysqli-mysqli]: (HY000/2013): Lost connection to MySQL server during query in M:\Documents\School\PHP\Opdrachten\Opdracht H2 en H3\view_db.php on line 22

Fatal error: Maximum execution time of 30 seconds exceeded in M:\Documents\School\PHP\Opdrachten\Opdracht H2 en H3\view_db.php on line 22

Gebruikte programma's:
usbwebserver
phpmyadmin
notepad++ (als dat er wat toe doet)

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

1. Error reporting aanzetten
2. Query echo-en en handmatig uitvoeren (bijv. in PHPMyAdmin)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • Vinze
  • Registratie: Augustus 2006
  • Laatst online: 16-11 21:44
BtM909 schreef op dinsdag 02 september 2008 @ 14:38:
1. Error reporting aanzetten
2. Query echo-en en handmatig uitvoeren (bijv. in PHPMyAdmin)
Query rechtstreeks in SQL uitvoeren werkt goed, geen errors of iets degelijks.
Error reporting ga ik even naar kijken.

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Hoeveel rijen geeft die query? Weet je zeker dat je niet gewoon 30s lang een idioot grote resulset aan het overpompen bent?

{signature}


  • Vinze
  • Registratie: Augustus 2006
  • Laatst online: 16-11 21:44
Voutloos schreef op dinsdag 02 september 2008 @ 15:01:
Hoeveel rijen geeft die query? Weet je zeker dat je niet gewoon 30s lang een idioot grote resulset aan het overpompen bent?
Er staat hooguit 15 rijen van 4 kolommen in, dus dat zal het probleem niet zijn lijkt me.
Inmiddels heb ik ook wat error reporting toegevoegd.
Dit staat tussen regel 23 en 25 van het script in de startpost:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//Error reporting:
if (!$db = @msqli_connect($host, $gebruiker, $wachtwoord, $database,$port)){
    echo "Er is een fout opgetreden";
    echo "Fout code" . mysqli_connect_errno();
    echo "<br>Berichttext:" . mysqli_connect_error();
    }

    else{
        if (!$result = @mysqli_query($db,$query)){
        echo "Er is een fout opgetreden: " . msqli_error($db);
        echo "Foutcode: " . mysqli_errno($db) .").";
        }
    }
    else{
//De rest van het script
}


Nu krijg ik de fout:
Parse error: syntax error, unexpected T_ELSE in M:\Documents\School\PHP\Opdrachten\Opdracht H2 en H3\view_db.php on line 43
Dit lijkt mij op een fout in de foutcode :?

  • BalusC
  • Registratie: Oktober 2000
  • Niet online

BalusC

Carpe diem

Lijkt mij eerder een fout in de code ;) Tel de braces en probeer alles consistent te inspringen.

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 12:18

Sebazzz

3dp

PHP:
1
$query     = "SELECT * FROM omrekenen ORDER BY 'date'";
Óf je gebruikt backtics ( ` ) of je gebruikt niks maar veldnamen worden nooit geselecteerd met enkele quotes.

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


  • Standeman
  • Registratie: November 2000
  • Laatst online: 12:32

Standeman

Prutser 1e klasse

Iets met regel 27 ofzo... Ik zit zelf niet goed te kijken 8)7

[ Voor 150% gewijzigd door Standeman op 02-09-2008 15:26 ]

The ships hung in the sky in much the same way that bricks don’t.


  • Morax
  • Registratie: Mei 2002
  • Laatst online: 11:24
Viasco schreef op dinsdag 02 september 2008 @ 15:18:
[...]

Er staat hooguit 15 rijen van 4 kolommen in, dus dat zal het probleem niet zijn lijkt me.
Inmiddels heb ik ook wat error reporting toegevoegd.
Dit staat tussen regel 23 en 25 van het script in de startpost:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//Error reporting:
if (!$db = @msqli_connect($host, $gebruiker, $wachtwoord, $database,$port)){
    echo "Er is een fout opgetreden";
    echo "Fout code" . mysqli_connect_errno();
    echo "<br>Berichttext:" . mysqli_connect_error();
    }

    else{
        if (!$result = @mysqli_query($db,$query)){
        echo "Er is een fout opgetreden: " . msqli_error($db);
        echo "Foutcode: " . mysqli_errno($db) .").";
        }
    }
    else{
//De rest van het script
}


Nu krijg ik de fout:
Parse error: syntax error, unexpected T_ELSE in M:\Documents\School\PHP\Opdrachten\Opdracht H2 en H3\view_db.php on line 43
Dit lijkt mij op een fout in de foutcode :?
De eerste else moet een elseif zijn :)

What do you mean I have no life? I am a gamer, I got millions!


  • Arjan90
  • Registratie: September 2005
  • Laatst online: 12:53
Lijn 30 t/m 39 zorg je dat het niet verwerkt wordt, er is alleen één probleempje: er staat daar een bracket die dus niet verwerkt wordt. Vandaar de foutmelding die je krijgt op regel 43 (vermoed ik).

"Everybody is a genius. But if you judge a fish by its ability to climb a tree, it will live its whole life believing that it is stupid."


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Neuh, de php syntax fout zit gewoon in het 2e stuk code en meer dan wat BalusC meteen zei valt er niet te bespreken. :P

{signature}


  • Vinze
  • Registratie: Augustus 2006
  • Laatst online: 16-11 21:44
@ BalusC;
Kan nergens onafgesloten of ongeldige tekens/haakjes vinden, wellicht dat 1 van jullie iets ziet?

@Sebazzz;
Veranderd naar `date`
Lost helaas niks op.

@Morax;
Heb er een elseif van gemaakt, maar krijg de volgende error:
PHP:
1
2
3
4
5
    elseif{
        (!$result = @mysqli_query($db,$query));
            echo "Er is een fout opgetreden: " . msqli_error($db);
            echo "Foutcode: " . mysqli_errno($db);
        }

Error:
Parse error: syntax error, unexpected '{', expecting '(' in M:\Documents\School\PHP\Opdrachten\Opdracht H2 en H3\view_db.php on line 37 (lijn 37 is lijn 1 in het voorbeeld)

@Sp!tF!re;
Die } is ook niet nodig, want hij sluit niks af daar.

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 12:18

Sebazzz

3dp

Ken je wel PHP?
PHP:
1
2
3
4
5
    elseif{
        (!$result = @mysqli_query($db,$query));
            echo "Er is een fout opgetreden: " . msqli_error($db);
            echo "Foutcode: " . mysqli_errno($db);
        }

--->>>
PHP:
1
2
3
4
    elseif  (!($result = @mysqli_query($db,$query))) {
            echo "Er is een fout opgetreden: " . msqli_error($db);
            echo "Foutcode: " . mysqli_errno($db);
        }

En weet je zeker dat je niet mysql_query en varianten wilt? Of heb je met een Microsoft SQL database te maken?

[ Voor 12% gewijzigd door Sebazzz op 02-09-2008 16:00 ]

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


  • Vinze
  • Registratie: Augustus 2006
  • Laatst online: 16-11 21:44
@Sebazzz
Tuurlijk kan ik wel php, alleen had dat haakje bij elseif verkeerd staan zie ik nu.
Volgens mij ga ik ook aardig scheel kijken en dingen over het hoofd zien nu ik er al lang mee bezig ben.. Zo maar ff een pauze nemen en dan werken.

Krijg nu geen fout codes meer trouwens, dus dat is opgelost.
Het probleem zelf nog niet helaas, de pagina blijft maar aan het laden zonder een error en na 30 sec stopt ie ermee.
Sebazzz schreef op dinsdag 02 september 2008 @ 15:56:
En weet je zeker dat je niet mysql_query en varianten wilt? Of heb je met een Microsoft SQL database te maken?
Ja ik denk dat ik daar vanavond maar mee bezig ga, kan ik wéér alles aanpassen.
De leraar op school wou graag dat ik mysqli gebruik, omdat dit nieuwer is.
Ook vond ie het een plus punt als ik dat gebruik, maar dan mag ie me eerst uitleggen hoe het werkt. 8)7

En nog 1 keer de gehele code zoals hij op dit moment is (en niet werkt):
PHP:
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?php
include ('connect.php');
/*---Het volgende staat in connect.php----
$host           = '127.0.0.1';
$port           = '1337';
$gebruiker      = 'root';
$wachtwoord = 'usbw';
$database       = 'binair';
--------------------------------------------*/

// Query invoeren
$query  = "SELECT * FROM omrekenen ORDER BY `date`";

// Verbinding tot stand brengen
$mysqli = new mysqli($host, $gebruiker, $wachtwoord, $database,$port);

//Controleren of de database geopend kan worden
$mysqli->select_db($database);

//De Query uitvoeren
$result = $mysqli->query($query);

//Error reporting:
if (!$db = @msqli_connect($host, $gebruiker, $wachtwoord, $database,$port)){
        echo "Er is een fout opgetreden";
        echo "Fout code" . mysqli_connect_errno();
        echo "<br>Berichttext:" . mysqli_connect_error();
    }

    elseif (!$result = @mysqli_query($db,$query)){
            echo "Er is een fout opgetreden: " . msqli_error($db);
            echo "Foutcode: " . mysqli_errno($db);
        }
    
    else{
//Resultaten naar het scherm schrijven
//  echo "<table>";
         while ($rij = $result->fetch_array()){
                echo "naam: {$rij['name']}";
            }
/*
            "<tr>
                <td>    {$rij['name']}      </td>
                <td>    {$rij['date']}      </td>
                <td>    {$rij['dec_getal']} </td>
                <td>    {$rij['bin_getal']}     </td>
            </tr>";
        echo "</table>";
Table word (nog) niet gebruikt!!    
*/
    }

$mysqli->close();

?>

[ Voor 80% gewijzigd door Vinze op 02-09-2008 16:09 ]


  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
hoe zeker ben je er van dat de fout in dit stukje code zit? wat gebeurd er als je deze hele code uitslashed?
het zou bijv. ook kunnen dat er verderop, of eerder, een while-lus per ongeluk eeuwig doorgaat... (nou ja, 30 seconden dus)

  • Noork
  • Registratie: Juni 2001
  • Niet online
Ik zie op regel 20, in de code uit de startpost, nog een spatie. Is dat een typo, geeft dat geen fouten?

  • Vinze
  • Registratie: Augustus 2006
  • Laatst online: 16-11 21:44
@Noork;
Dat was een typfoutje, maar gaf geen fouten en heb ik er ook al uitgehaald.

@Edwardvb;
Dit is de hele code :P

  • hamsteg
  • Registratie: Mei 2003
  • Laatst online: 11:04

hamsteg

Species 5618

regel 14 t/m 21 uitcommentarieren ?

De verbinding opzetten en de query voor je twee keer uit. 1 keer function based, 1 keer object based.

... gecensureerd ...


  • Noork
  • Registratie: Juni 2001
  • Niet online
Wat staat er eigenlijk een de rij array? Kun je dit proberen ipv de while loop:

PHP:
1
2
$rij = $result->fetch_array();
print_r($rij);

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Sebazzz schreef op dinsdag 02 september 2008 @ 15:56:
En weet je zeker dat je niet mysql_query en varianten wilt? Of heb je met een Microsoft SQL database te maken?
mysqli_*() funcs zijn gewoon voor mysql hoor, er zijn meerdere client libs. :z

{signature}


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 16-11 14:26

Creepy

Tactical Espionage Splatterer

code:
1
2
3
4
5
6
7
8
9
10
$mysqli = new mysqli($host, $gebruiker, $wachtwoord, $database,$port); 

//Controleren of de database geopend kan worden 
$mysqli->select_db($database); 

//De Query uitvoeren 
$result = $mysqli->query($query); 

//Error reporting: 
if (!$db = @msqli_connect($host, $gebruiker, $wachtwoord, $database,$port)){

Let nu eens op wat je doet. Je bent nu mysql en mssql door elkaar heen aan het gebruiken of je bent losse functies met object methods door elkaar heen aan het gebruiken.

Begin gewoon weer eens opnieuw. Je bent er nu echt een zooitje van aan het maken. Syntax errors e.d. hoef je hier niet te posts, die mag je zelf oplossen. Vervolgens logisch nadenken wat je nu aan het gebruiken bent en waarom. Nu gebruik je mysql en mssql door elkaar (of losse functies vs methods) en dat kan uiteraard niet goed gaan. Mocht je geen syntax fouten meer hebben en een stukje code dat of mysql of mssql gebruikt (en niet beide) en je komt er echt niet uit, dan kan je een nieuw topic openen. Let dan wel aub op Programming Beleid - De Quickstart

@noork: De code voor het uitlezen van de data wordt nog niet uitgevoerd. De fout treed daarvoor al op
@Voutloos: mssql staat ook in de code genoemd. Daarnaast de mysqli class gebruiken samen met losse mysqli functies lijkt me ook niet helemaal zuiver ;)

[ Voor 15% gewijzigd door Creepy op 02-09-2008 16:44 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1

Dit topic is gesloten.