Mysql hele tabel laten zien?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

David Waijers

David Waijers

26/12/2012 17:23:08
Quote Anchor link
Ik heb mijn simpele query script verder ontwikkeld, maar ik stuitte op dit probleem,
als ik bijv. deze query uitvoer, geeft hij alleen het id van de tabel.
Dit is de 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
<?
 
$username
="username";
$password="password";
$database="db";
 
mysql_connect(localhost,$username,$password);
@
mysql_select_db($database) or die( "Unable to select database");
 
$insertquery=$_POST['query'];
 
$result = mysql_query($insertquery);
 
// error handeling, kijk of er num_rows of affected rows gebruikt moet worden
if ( $result === false ){
  echo "<br>You should take a look at your query because something went wrong:</br>\"$query\"";
}

elseif( $result === true ) {
  $num = mysql_affected_rows();
  echo "<h1>query succesfull <a href='url'>Back</a></h1><br>";
}

else {
  $num = mysql_num_rows($result);
}

 
$i=0;
while ($i < $num) {
 
echo mysql_result($result, $i);
echo "<br>";
$i++;
}

 
 
 
?>
Gewijzigd op 26/12/2012 17:41:19 door David Waijers
 
PHP hulp

PHP hulp

22/09/2021 18:42:17
 
Moose -

Moose -

26/12/2012 17:26:26
 
Erwin H

Erwin H

26/12/2012 17:31:39
Quote Anchor link
Van de php manual over mysql_result
Quote:
mysql_result()

Retrieves the contents of one cell from a MySQL result set.

When working on large result sets, you should consider using one of the functions that fetch an entire row (specified below). As these functions return the contents of multiple cells in one function call, they're MUCH quicker than mysql_result(). Also, note that specifying a numeric offset for the field argument is much quicker than specifying a fieldname or tablename.fieldname argument.

En verder gaat ook hier weer op wat ik in de vorige topic heb gezegd. Als je query geen resultset oplevert, kan je ook geen resultaten eruit halen. mysql_result (en de fetch functies) zullen dan dus een foutmelding op gaan leveren.
 
David Waijers

David Waijers

26/12/2012 17:42:49
Quote Anchor link
Not Moose op 26/12/2012 17:26:26:


Serieus? C'on waarom zou je zoiets doen? Al mijn tables verwijderen...

Toevoeging op 26/12/2012 17:46:54:

David Waijers op 26/12/2012 17:42:49:
Not Moose op 26/12/2012 17:26:26:


Serieus? C'on waarom zou je zoiets doen? Al mijn tables verwijderen...


Ho sorry, ik zie dat je niks verwijderd hebt..
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

26/12/2012 18:26:59
Quote Anchor link
Wat Not Moose bedoelt is dat je nooit query's moet uitvoeren die een gebruiker invoert.
Kwaadwillende mensen (hackers -vrij vertaald uitschot-) kunnen dan de beschikking krijgen over je gehele database, en zelfs ervoor zorgen dat jij zelf er geen toegang meer tot hebt.
Daarnaast moet je bij query's gebaseerd op gebruikers invoer, die gebruikers invoer beveiligen door de strings te escapen of door parameters in de query te gebruiken.
Stel je het volgende voor:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$result
= mysql_query("SELECT * users WHERE username='" . $_POST['username'] .
"' AND pwd = '" . $_POST['pwd'] . "'");
//ik ben de kwaadwillende en voer in:
// in het veld username: x' OR '1' = '1
// en het zelfde bij het wachtwoord
// dan krijg je deze query:
// SELECT * FROM users WHERE username = 'x' OR '1' = '1' AND pwd = 'x' OR '1' = '1'

?>

Met bv een escape functie zou de query er zo uitzien:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
// SELECT * FROM users WHERE username = 'x\' OR \'1\' = \'1\'' AND pwd = 'x\' OR \'1\' = \'1\''
?>
Gewijzigd op 26/12/2012 18:34:49 door Ger van Steenderen
 
David Waijers

David Waijers

26/12/2012 19:02:45
Quote Anchor link
Ger van Steenderen op 26/12/2012 18:26:59:
Wat Not Moose bedoelt is dat je nooit query's moet uitvoeren die een gebruiker invoert.
Kwaadwillende mensen (hackers -vrij vertaald uitschot-) kunnen dan de beschikking krijgen over je gehele database, en zelfs ervoor zorgen dat jij zelf er geen toegang meer tot hebt.
Daarnaast moet je bij query's gebaseerd op gebruikers invoer, die gebruikers invoer beveiligen door de strings te escapen of door parameters in de query te gebruiken.
Stel je het volgende voor:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$result
= mysql_query("SELECT * users WHERE username='" . $_POST['username'] .
"' AND pwd = '" . $_POST['pwd'] . "'");
//ik ben de kwaadwillende en voer in:
// in het veld username: x' OR '1' = '1
// en het zelfde bij het wachtwoord
// dan krijg je deze query:
// SELECT * FROM users WHERE username = 'x' OR '1' = '1' AND pwd = 'x' OR '1' = '1'

?>

Met bv een escape functie zou de query er zo uitzien:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
// SELECT * FROM users WHERE username = 'x\' OR \'1\' = \'1\'' AND pwd = 'x\' OR \'1\' = \'1\''
?>



[/quote]

Ik was niet van plan dit te implementeren in een website en/of user based system.
Meer voor mijzelf. Maar toch bedankt voor de heads up!
Gewijzigd op 26/12/2012 19:03:48 door David Waijers
 



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.