PHP script werkt niet goed
Weet iemand wat er niet goed is aan de onderstaande 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
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
<?php
$server = "localhost";
$user = "user";
$database = "database";
$w8woord = "password";
mysql_connect ("$server", "$user","$w8woord");
mysql_select_db("$database");
$query= "SELECT * FROM foto WHERE ID=$_GET[nummer]";
$result = mysql_query($query);
while ($record = mysql_fetch_object($result)) {
$foto = $record->soort;
$datum = $record->datum;
$plaats = $record->plaats;
$tekst = $record->tekst;
echo "<p align=\"center\"><img src=\"../../images/1/" . $foto . ".jpg\" /></p>";
if ($datum == "0000-00-00"){
echo"<h2 align=\"center\"><font color=\"#008000\">". $foto ."</font></h2>";
} else {
echo"<h2 align=\"center\"><font color=\"#008000\">". $foto ."</font></h2>";
echo"<b align=\"center\"><font color=\"#CCCCCC\">". $datum ." :</font></b>";
echo "<a> </a>";
echo"<b align=\"center\"><font color=\"#CCCCCC\">". $plaats ."</font></b>";
echo"<p align=\"left\"><font color=\"#CCCCCC\"> ". $tekst ." </font></p>";
} //end if
}
?>
$server = "localhost";
$user = "user";
$database = "database";
$w8woord = "password";
mysql_connect ("$server", "$user","$w8woord");
mysql_select_db("$database");
$query= "SELECT * FROM foto WHERE ID=$_GET[nummer]";
$result = mysql_query($query);
while ($record = mysql_fetch_object($result)) {
$foto = $record->soort;
$datum = $record->datum;
$plaats = $record->plaats;
$tekst = $record->tekst;
echo "<p align=\"center\"><img src=\"../../images/1/" . $foto . ".jpg\" /></p>";
if ($datum == "0000-00-00"){
echo"<h2 align=\"center\"><font color=\"#008000\">". $foto ."</font></h2>";
} else {
echo"<h2 align=\"center\"><font color=\"#008000\">". $foto ."</font></h2>";
echo"<b align=\"center\"><font color=\"#CCCCCC\">". $datum ." :</font></b>";
echo "<a> </a>";
echo"<b align=\"center\"><font color=\"#CCCCCC\">". $plaats ."</font></b>";
echo"<p align=\"left\"><font color=\"#CCCCCC\"> ". $tekst ." </font></p>";
} //end if
}
?>
Ik krijg deze foutmelding:
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in bestand.php on line ..
Ik hoop dat iemand mij kan helpen. Mocht er nog meer info nodig zijn, dan hoor ik het graag.
Met vriendelijke groet,
Jos de Vries
Misschien een domme vraag, maar bestaat de tabel foto ?
bv. je gebruikt een tabel of veld dat niet bestaat.
Wat het ook kan zijn: $_GET[nummer] is leeg, of toch geen geheel getal.
Dan wordt je sql string bv.
"SELECT * FROM foto WHERE ID=" // wat uiteraard niet mag
of
"SELECT * FROM foto WHERE ID=een string" // wat al helemaal niet mag
Controleer je daar ergens op, dat $_GET[nummer] ingevuld is, dat het numeriek is?
Gewijzigd op 28/02/2011 15:35:51 door Kris Peeters
http://www.phphulp.nl/php/tutorial/data-verwerking/foutafhandeling-query-sql/735/
- SQL Injection is mogelijk. Je controleert je input niet in $_GET, en elke gek kan met weinig moeite je database induiken.
- variabelen stana buiten quotes, dat mag niet.
- Wat is het nu van een blanco <a> </a>
- Waarom ga je variabelen kopieeren in lijn 17 t/m 20?
Terug naar de tekentafel dus.
@Wesley PHP: ER bestaat inderdaad een tabel foto.
Het script is hier werkend te zien:
http://www.noordlaarderbos.nl/NL/soorten/index.php
Wat ik wil, is het overzetten naar Wordpress op deze website:
www.vleugelsensnaren.nl
@Chris Peters: Quote: "Wat het ook kan zijn: $_GET[nummer] is leeg, of toch geen geheel getal. Dan wordt je sql string bv."
Hoe kun je controleren of $_GET(nummer) leeg is?
Het script is overigens niet van mijzelf. Zelf ben ik nog een beginner op het gebied van PHP. Het probleem zit inderdaad in "$_GET[nummer]", want ik een nummer hier in vul, dan gaat het wel goed. Maar dat is niet de bedoeling.
Ik heb de database overigens overgezet naar een lokale db op mijn PC.
@Aar: Quote: "- SQL Injection is mogelijk. Je controleert je input niet in $_GET, en elke gek kan met weinig moeite je database induiken."
Hoe kun je voorkomen dat elke gek in je db kan duiken?
Met vriendelijke groet,
Jos de Vries
Jos de Vries op 01/03/2011 09:48:14:
Hoe kun je voorkomen dat elke gek in je db kan duiken?
Met vriendelijke groet,
Jos de Vries
Hoe kun je voorkomen dat elke gek in je db kan duiken?
Met vriendelijke groet,
Jos de Vries
$query= "SELECT * FROM foto WHERE ID= '".mysql_real_escape_string($_GET[nummer])."' ";
Code (php)
1
$query= "SELECT soort, plaats, datum, tekst FROM foto WHERE ID= '".mysql_real_escape_string($_GET['nummer'])."' ";
Gewijzigd op 01/03/2011 09:59:06 door - Ariën -
Het probleem is dat je eerste een foutmelding krijgt omdat
"nummer" in het begin nog geen waarde heeft. Bij het origineel
wordt eerst een ander script opgestart. Zodra je op een soort
klik dan krijgt 'nummer' een waarde.
Hoe kan ik 'nummer' gelijk een waarde toekennen, zonder dat je hoeft
te klikken op een vogelnaam?
Deze foutmelding krijg ik als 'nummer' geen waarde heeft.
"Undefined index: nummer in ....
Met vriendelijke groet,
Jos de Vries
Jos de Vries op 01/03/2011 09:48:14:
Hoe kun je controleren of $_GET(nummer) leeg is?
Hoe kun je controleren of $_GET(nummer) leeg is?
if (empty($_GET['nummer']))