intval(mysql_num_rows(): fout op pagina.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

T Peer

T Peer

08/10/2008 19:20:00
Quote Anchor link
Ik probeer uit mijn database 4 kolommen te laden die dan per kolom op ASC volgorde te zetten zijn maar ik krijg telkens een fout melding.

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\bla\wwwroot\blabla\test.php on line 67

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?php

$order
= $_GET['order'];
$order_by = $_GET['order_by'];

if (!isset($order) || $order != 'ASC' || $order != DESC) {
    $order = 'ASC';
}

if (isset($order_by)) {
    switch($order_by) {
        case
'id':
            $query = 'SELECT id, titel, datum, download FROM stm_downloads ORDER BY id ' . $order . ', id ASC ';
            break;
        case
'titel':
            $query = 'SELECT id, titel, datum, download FROM stm_downloads ORDER BY titel ' . $order . ', id ASC ';
            break;
        case
'datum':
            $query = 'SELECT id, titel, datum, download FROM stm_downloads ORDER BY datum ' . $order . ', id ASC ';
                    break;
        case
'download':
            $query ='SELECT id, titel, datum, download FROM stm_downloads ORDER BY download ' . $order . ', id ASC ';
                break;        
                
        default:

            $query = 'SELECT id, titel, datum, download FROM stm_downloads ORDER BY id ' . $order . ', id ASC ';
                break;
    }
}

else {
    $query = 'SELECT id, titel, datum, download FROM stm_downloads ORDER BY titel ASC, datum ASC';
}

mysql_connect('db.local.nl','userbla','wwbla');
mysql_select_db('dbbla');
$result = mysql_query($query);        


// html
echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?".">"; ?>

<table width="700" border="1">
  <tr>
    <td><a href="downloads.php?order_by=id&amp;order=ASC">id</a></td>
    <td><a href="downloads.php?order_by=titel&amp;order=ASC">Titel</a></td>
    <td><a href="downloads.php?order_by=datum&amp;order=ASC">Datum</a></td>
    <td><a href="downloads.php?order_by=download&amp;order=ASC">Aantal download</a></td>

  </tr>
<?
$numrows
= intval(mysql_num_rows($result));
if($numrows > 0) {
    while($member = mysql_fetch_array($result)) {
            echo '<tr><td>'.$member['id'].'</td><td>'.$member['titel'].'</td><td>'.$member['datum'].'</td><td>'.$member['download'].'</td><tr>';
    
}}

else {
    echo '<tr><td colspan="9">Geen downloads gevonden</td></tr>';
}

?>

</table>




Wel zie ik een tabel en de else Echo.

Maar wat is er nog meer fout.
 
PHP hulp

PHP hulp

22/12/2024 18:45:10
 
Timen kut

Timen kut

08/10/2008 19:22:00
Quote Anchor link
Echo je query en pleur die 's in phpmyadmin :-)
 
T Peer

T Peer

08/10/2008 19:22:00
Quote Anchor link
sorry, even nog iets weggehaald wat voor dit script stond, fout melding word gegenereerd in regel 48
 
Noppes

Noppes

08/10/2008 19:26:00
Quote Anchor link
Ik snap zo ie zo al niet waaom je een intval doet over mysql_num_rows

mysql_num_rows returned al het aantal records in recordset of false bij een fout
 
T Peer

T Peer

08/10/2008 19:29:00
Quote Anchor link
Ik ben er al achter. Echt niet te geloven, gisteren avond hele tijd bezig geweest en net nog een uur. Blijkt dat mijn
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT id, titel, datum, download
gewoon
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT id, titel, datum, downloads
moet wezen omdat ik in de database een s te veel had staan.

Echt heel stom
 
Timen kut

Timen kut

08/10/2008 19:30:00
Quote Anchor link
Edit: is al gefixed blijkbaar :P
Gewijzigd op 01/01/1970 01:00:00 door Timen kut
 
Frank -

Frank -

10/10/2008 14:00:00
Quote Anchor link
6x dezelfde query noteren met als enige verschil een kolomnaam en een sorteerrichting (dus variabelen), is niet handig. 1 query met 2 variabelen is dan toch echt een heel stuk handiger.

En queries uitvoeren zonder foutafhandeling is niet slim, dat is vragen om problemen.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?
$order_by
= $_GET['order_by'];
if (isset($order_by)) {
?>

Wedden voor een kratje bier dat $order_by altijd bestaat? Het is zelfs onmogelijk dat deze niet bestaat, je maakt hem net aan... Deze controle is dus zinloos. Het zou handiger zijn om te controleren of $_GET['order_by'] bestaat, daar heb je geen flauw idee van maar je controleert dit helemaal nergens. Ook controleer je niet of deze wel een geldige inhoud heeft en doe je helemaal niets aan beveiliging. Jouw database naar de bliksem helpen, is dan waarschijnlijk ook een fluitje van een cent. SQL-injection.

Ga eens aan de slag met mysql_real_escape_string(), die gaat je behoeden voor grote ellende. Userinput (COOKIE, GET, POST, etc.) mag NOOIT zo in een query terecht komen, ook niet als je jezelf eerst voor de gek gaat houden door deze onbetrouwbare input in een andere variabele te zetten. Daar wordt het echt niet veiliger van, in tegendeel!
 
RvW Of toch niet

RvW Of toch niet

10/10/2008 14:06:00
Quote Anchor link
pgFrank schreef op 10.10.2008 14:00:
Daar wordt het echt niet veiliger van, in tegendeel!


ik wist dat het Zinloos was om het in een var te zetten en dat het alleen maar tijd kost,
maar wat bedoel je met in tegendeel ? is het dus ook nog gevaarlijk om het tedoen?
 
- SanThe -

- SanThe -

10/10/2008 16:41:00
Quote Anchor link
rvw schreef op 10.10.2008 14:06:
pgFrank schreef op 10.10.2008 14:00:
Daar wordt het echt niet veiliger van, in tegendeel!


ik wist dat het Zinloos was om het in een var te zetten en dat het alleen maar tijd kost,
maar wat bedoel je met in tegendeel ? is het dus ook nog gevaarlijk om het tedoen?

Nee, op zich niet. Maar ik denk dat pgFrank bedoelt dat als je $naam in je script gebruikt dat je dan vanzelf aanneemt dat daar een 'naam' in staat. Gebruik je echter $_GET['naam'] dan weet je dat daar van alles in kan staan. Dus het copiëren van $_GET['naam'] naar $naam kan onduidelijkheid verschaffen waardoor je fouten/lekken kunt krijgen.
 



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.