$result is geen result?
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in ...
Bij dit stuk 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
37
38
39
40
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?
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?
Verder is session_register() hopeloos verouderd, dit moet zijn $_SESSION[]. Zie verder de handleiding.
Ongeldige query: No database selected
De database naam zal niet juist zij zeker? Ik zoek nog even verder
Idd of databse bestaat niet...
// 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!
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.
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
Zoek eens er over op. het staat er al jaren in. Daarnaast op php.net enz..
Begin je script eens met de volgende 2 regels:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
// rest van de code
?>
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...
Die globals komen uit een POST form. Beter de $_POST gebruiken of is dat ook mis?
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
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);
}
?>
// 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.
wat is mysql injection frank? :o
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: Zie de :| dankje, gelukkig kom ik er zo achter en niet op het moment dat ut te laat is :p dankje!