$result is geen result?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Maarten

Maarten

06/06/2006 16:26:00
Quote Anchor link
Ik krijg steeds volgende foutmelding:

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in ...

Bij dit stuk code:

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
<?php
session_start();
session_register('userid');
session_register('username');

// deze regel verwijderen na testing security
// $username = '';
// einde verwijderen
//print "$pasw / $login";

if (!($pasw == '' || $login == ''))
{

    // Check hier aanwezigheid in Database

    $dbh=mysql_connect ("localhost", "databaseuser", "userpwd") or die ('I cannot connect to the database because: ' . mysql_error());
    mysql_select_db ("mijndatabase");
    
    $query = ("SELECT id,Vnaam,Anaam,Login,Pwd,Email FROM gebruiker WHERE Login = '$login' AND Pwd = '$pasw'");
$result=mysql_query($query);
print $query;
        while (list($id, $VNaam, $ANaam, $Login, $Pwd, $Email) = mysql_fetch_row($result))
    {

        print ("$id, $VNaam, $ANaam, $Login, $Pwd, $Email");
        $userid=$id;
        $username= "$VNaam $ANaam";
    }





    mysql_close($dbh);
}
[
/code]

Ik heb dit gewoon gecopy pasted van een andere configuratie die gelijkaardig is, daar krijg ik de fout niet.
Volgende dingen heb ik gechecked:
-
databaseuser en zijn paswoord zijn correct
- databasenaam is correct
- query geeft een resultaat terug van 1 rij

Weet iemand wat hier misloopt?
 
PHP hulp

PHP hulp

17/11/2024 02:56:58
 
Frank -

Frank -

06/06/2006 16:28:00
Quote Anchor link
Je controleert niet of de query wel correct is uitgevoerd.

Verder is session_register() hopeloos verouderd, dit moet zijn $_SESSION[]. Zie verder de handleiding.
 
Maarten

Maarten

06/06/2006 16:29:00
Quote Anchor link
Ik heb ondertussen al wat meer gevonden:

Ongeldige query: No database selected

De database naam zal niet juist zij zeker? Ik zoek nog even verder
 
Eris -

Eris -

06/06/2006 16:30:00
Quote Anchor link
Idd of databse bestaat niet...
 
Maarten

Maarten

06/06/2006 16:41:00
Quote Anchor link
Het antwoord heb ik gevonden! De database naam was niet juist. Daarom heb ik dit script uitgevoerd:
// get database list
$query = "SHOW DATABASES";
$result = mysql_query($query) or die ("Error in query: $query. ".mysql_error());

echo "<ul>";
while ($row = mysql_fetch_array($result)) {
echo "<li>".$row[0];

// for each database, get table list and print
$query2 = "SHOW TABLES FROM ".$row[0];
$result2 = mysql_query($query2) or die ("Error in query: $query2. ".mysql_error());
echo "<ul>";
while ($row2 = mysql_fetch_array($result2)) {
echo "<li>".$row2[0];
}
echo "</ul>";
}
echo "</ul>";


dan copy paste van de output, en 't was gefixt!

Bedankt!
 
Mark L

Mark L

06/06/2006 18:52:00
Quote Anchor link
Frank:
Je controleert niet of de query wel correct is uitgevoerd.

Verder is session_register() hopeloos verouderd, dit moet zijn $_SESSION[]. Zie verder de handleiding.


Word je het niet zat altijd dit moeten zetten?

MAAK ER EEN TUTORIAL VAN!

PS: Als je 2 dagen eerder was.. had je kans om de biosbon te winnen
 
Eris -

Eris -

06/06/2006 18:55:00
Quote Anchor link
Zoek eens er over op. het staat er al jaren in. Daarnaast op php.net enz..
 
Frank -

Frank -

06/06/2006 19:06:00
Quote Anchor link
Toch is het te hopen dat bovenstaand script niet werkt! $pasw en $login komen zo maar uit de lucht vallen, dat duidt op een ernstig veiligheidslek genaamd superglobals.

Begin je script eens met de volgende 2 regels:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);

// rest van de code
?>


Wat is hiervan het resultaat?

@Markiej: Wanneer ik het zat ben om het wéér te moeten roepen, dan reageer ik gewoon niet. En wat die tutorials betreft, volgens mij staat het al wel ergens maar wordt deze tut gewoon niet gelezen. En de bioscoopbon is hier niet geldig...
 
Maarten

Maarten

06/06/2006 20:09:00
Quote Anchor link
Die globals komen uit een POST form. Beter de $_POST gebruiken of is dat ook mis?
 
Andries Louw Wolthuizen

Andries Louw Wolthuizen

06/06/2006 22:32:00
Quote Anchor link
Ja, de $_POST gebruiken, maar wel controleren..
Code (php)
PHP script in nieuw venster Selecteer het PHP script

bijv.
 
Frank -

Frank -

07/06/2006 15:44:00
Quote Anchor link
Hier een stuk code dat door Jan Koehoorn is gemaakt:
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
<?php
  // bescherming tegen mysql injection
  function quote_smart($value)
  {

      if (get_magic_quotes_gpc()) {
          $value = stripslashes($value);
      }

      if (version_compare(phpversion(), "4.3.0") == "-1") {
          return mysql_escape_string($value);
      }
else {
          return mysql_real_escape_string($value);
      }
  }
  
  function
check_array(&$array)
  {

      foreach ($array as $key => $value) {
          $value = quote_smart($value);
          $array[$key] = $value;
      }
  }

  
  if ($_SERVER['REQUEST_METHOD'] == 'POST') {
      check_array($_POST);
  }

  if ($_SERVER['REQUEST_METHOD'] == 'GET') {
      check_array($_GET);
  }

?>

@Andries: Ik zou geen htmlentities() gebruiken bij het controleren van de input. Ik vind het prima dat de code zo in mijn database terecht komt. Dan kan ik deze data ook gebruiken voor andere zaken dan html. Wil ik het echter op het scherm zetten, dan pas ik uiteraard wel htmlentities toe. Maar dat moet je toch al doen.
 
Koen B

Koen B

07/06/2006 17:34:00
Quote Anchor link
wat is mysql injection frank? :o
 
Frank -

Frank -

07/06/2006 17:39:00
Quote Anchor link
@Koen: Zie de tutorials. Het komt er op neer dat een bezoeker sql-code naar jouw database kan sturen. Daarmee kan hij/zij volledige controle over de database verkrijgen. Alle informatie, ook vertrouwelijke, ligt dan op straat. Een 'grappenmaker' kan de database ook verwijderen cq. leegmaken. En op dit soort ellende zit niemand te wachten.
 
Koen B

Koen B

07/06/2006 17:45:00
Quote Anchor link
:| dankje, gelukkig kom ik er zo achter en niet op het moment dat ut te laat is :p dankje!
 



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.