Mysql hele tabel laten zien?
als ik bijv. deze query uitvoer, geeft hij alleen het id van de tabel.
Dit is de code:
Code (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
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++;
}
?>
$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
mysql_result
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.
Van de php manual over 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.
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.
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:
Serieus? C'on waarom zou je zoiets doen? Al mijn tables verwijderen...
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..
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)
1
2
3
4
5
6
7
8
9
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'
?>
$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)
1
2
3
2
3
<?php
// SELECT * FROM users WHERE username = 'x\' OR \'1\' = \'1\'' AND pwd = 'x\' OR \'1\' = \'1\''
?>
// 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
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:
Met bv een escape functie zou de query er zo uitzien:
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)
1
2
3
4
5
6
7
8
9
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'
?>
$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:
Gewijzigd op 26/12/2012 19:03:48 door David Waijers