Vreemd verschijnsel?
Ik heb een vreemd probleem waar ik niet uit kom. Ik probeer gegevens uit een database te lezen en weer te geven maar ik krijg iedere keer deze melding.
Unknown column '$persoon_id' in 'where clause'
De kolom bestaat wel maar hij ziet hem niet? Dit is een stukje uit mijn script:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
$id = $_GET['persoon_id'];
$query = 'SELECT * FROM `personen` WHERE `$persoon_id`';
$result = mysql_query($query)or die(mysql_error());
while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
$query = 'SELECT * FROM `personen` WHERE `$persoon_id`';
$result = mysql_query($query)or die(mysql_error());
while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
De "persoon_id" zou van dit script moeten komen:
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
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
<?php
$query = "SELECT * FROM personen ORDER BY persoon_id";
$result = mysql_query($query)or die(mysql_error());
while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
?>
<br>
Database ID: <?php echo $row['persoon_id'] ?><br>
<br>
Telefoonnummer: <?php echo $row['tel1'] ?><br>
<br>
Telefoonnummer (mobiel): <?php echo $row['tel2'] ?><br>
<br>
<form name="persoon_id" action="profile.php?persoon_id=" method="get">
<input name="persoon_id" type="hidden" value="<?php echo $row['persoon_id']?>">
<input type="submit" name="more" value="Meer">
</div>
</form>
<?php
}
mysql_close ($db);
?>
$query = "SELECT * FROM personen ORDER BY persoon_id";
$result = mysql_query($query)or die(mysql_error());
while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
?>
<br>
Database ID: <?php echo $row['persoon_id'] ?><br>
<br>
Telefoonnummer: <?php echo $row['tel1'] ?><br>
<br>
Telefoonnummer (mobiel): <?php echo $row['tel2'] ?><br>
<br>
<form name="persoon_id" action="profile.php?persoon_id=" method="get">
<input name="persoon_id" type="hidden" value="<?php echo $row['persoon_id']?>">
<input type="submit" name="more" value="Meer">
</div>
</form>
<?php
}
mysql_close ($db);
?>
Wat ik ook probeer, niets lijkt te werken. Kan iemand mij hier mee helpen?
Met vriendelijke groet,
DC80
klopt in ieder geval niet ik weet het niet precies denk iets van
en beter geen * gebruiken
ik zou dit proberen:
succes!
Jason van der Zeeuw op 21/11/2010 18:05:07:
het * maakt niks uit...
Maar het wordt wel afgeraden die te gebruiken. Je kan namelijk veel beter je code specialiseren, alles laden is vaak helemaal niet nodig.
@ts, je gebruikt `, maar dat moet zijn '. En je plaatst je variabelen in de quote's, maar dat moet er buiten dus dan sluit je eerst " af en dan met . de variabele en dan met ." weer de lijn openen.
Jason van der Zeeuw op 21/11/2010 18:05:07:
het * maakt niks uit...
het maakt niks uit, ik doe hetzelf ook vaak, maar tegen wij word altijd gezegt dat het beter is om alleen de velden aan te geven die je nodig hebt;)
Foutmelding: Notice: Undefined variable: persoon_id in profile.php on line 12
Foutmelding: Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in profile.php on line 12
Foutmelding: geen, maar opmaak laad ook niet met bijbehorende gegevens.
Let a.u.b. niet op de opmaak/css. Deze wordt later in een .css bestand geplaatst. Het is alleen voor design doeleinde en niet voor gebruik.
Hier moet de ID vandaan komen
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
41
42
43
44
45
46
47
48
49
50
51
52
53
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
41
42
43
44
45
46
47
48
49
50
51
52
53
<?php
//rootdir
$rootdir="../";
//setup connection
require ($rootdir . "system/connect.inc.php");
//require auth.php
require ($rootdir . "system/login/auth.php");
//include header
include ($rootdir . "opmaak/header.inc.php");
?>
<table border="0" width="100%" height="100%" cellspacing="0" cellpadding="0">
<tr>
<td align="center">
<?php
$query = "SELECT * FROM personen ORDER BY persoon_id";
$result = mysql_query($query)or die(mysql_error());
while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
?>
<form name="persoon_id" action="profile.php?persoon_id=" method="post">
<div style="float: left; text-align: justify; border: 1px solid black; margin: 5 5 5 5; padding: 5 5 5 5; width: 40%">
<div style="color: orange; background-color: brown; border: 0px solid black; padding: 5 5 5 5; width: 345px"><?php echo $row['name'] ?></div>
<br>
Database ID: <?php echo $row['persoon_id'] ?><br>
<br>
Telefoonnummer: <?php echo $row['tel1'] ?><br>
<br>
Telefoonnummer (mobiel): <?php echo $row['tel2'] ?><br>
<br>
<form name="persoon_id" action="profile.php?persoon_id=" method="get">
<input name="persoon_id" type="hidden" value="<?php echo $row['persoon_id']?>">
<input type="submit" name="more" value="Meer">
</div>
</form>
<?php
}
mysql_close ($db);
?>
</td>
</tr>
</table>
<?php
//load footer
include ($rootdir . "opmaak/footer.inc.php");
?>
//rootdir
$rootdir="../";
//setup connection
require ($rootdir . "system/connect.inc.php");
//require auth.php
require ($rootdir . "system/login/auth.php");
//include header
include ($rootdir . "opmaak/header.inc.php");
?>
<table border="0" width="100%" height="100%" cellspacing="0" cellpadding="0">
<tr>
<td align="center">
<?php
$query = "SELECT * FROM personen ORDER BY persoon_id";
$result = mysql_query($query)or die(mysql_error());
while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
?>
<form name="persoon_id" action="profile.php?persoon_id=" method="post">
<div style="float: left; text-align: justify; border: 1px solid black; margin: 5 5 5 5; padding: 5 5 5 5; width: 40%">
<div style="color: orange; background-color: brown; border: 0px solid black; padding: 5 5 5 5; width: 345px"><?php echo $row['name'] ?></div>
<br>
Database ID: <?php echo $row['persoon_id'] ?><br>
<br>
Telefoonnummer: <?php echo $row['tel1'] ?><br>
<br>
Telefoonnummer (mobiel): <?php echo $row['tel2'] ?><br>
<br>
<form name="persoon_id" action="profile.php?persoon_id=" method="get">
<input name="persoon_id" type="hidden" value="<?php echo $row['persoon_id']?>">
<input type="submit" name="more" value="Meer">
</div>
</form>
<?php
}
mysql_close ($db);
?>
</td>
</tr>
</table>
<?php
//load footer
include ($rootdir . "opmaak/footer.inc.php");
?>
Hier is waar de ID naar toe moet en de gegevens opvraagt uit de database.
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
41
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
41
<?php
//rootdir
$rootdir="../";
//setup connection
require ($rootdir . "system/connect.inc.php");
//load header
include ($rootdir . "opmaak/header.inc.php");
$id = $_GET['persoon_id'];
$query = "SELECT * FROM personen WHERE "'.$id.'";
$result = mysql_query($query);
while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
?>
<table border="0" width="100%" height="100%" cellspacing="0" cellpadding="0">
<tr>
<td valign="top">
<div style="color: orange; font-size: 1.0em; border: 1px solid black; background-color: brown; padding: 5 5 5 5;"><?php echo $row['name'] ?></div>
<div style="font-size: 1.0em; border: 1px solid black; padding: 5 5 5 5; height: 94%;">
Foto??<br>
Naam: <?php echo $row['name'] ?><br>
Adres: <?php echo $row['adres'] ?><br>
Postcode + Plaats: <?php echo $row['zip'] ?><br>
Telefoonnummer: <?php echo $row['tel1'] ?><br>
Telefoonnummer (mobiel): <?php echo $row['tel2'] ?><br>
E-mail: <?php echo $row['email'] ?><br>
</div>
</td>
</tr>
</table>
<?php
}
mysql_close($db);
//load footer
include ($rootdir . "opmaak/footer.inc.php");
?>
//rootdir
$rootdir="../";
//setup connection
require ($rootdir . "system/connect.inc.php");
//load header
include ($rootdir . "opmaak/header.inc.php");
$id = $_GET['persoon_id'];
$query = "SELECT * FROM personen WHERE "'.$id.'";
$result = mysql_query($query);
while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
?>
<table border="0" width="100%" height="100%" cellspacing="0" cellpadding="0">
<tr>
<td valign="top">
<div style="color: orange; font-size: 1.0em; border: 1px solid black; background-color: brown; padding: 5 5 5 5;"><?php echo $row['name'] ?></div>
<div style="font-size: 1.0em; border: 1px solid black; padding: 5 5 5 5; height: 94%;">
Foto??<br>
Naam: <?php echo $row['name'] ?><br>
Adres: <?php echo $row['adres'] ?><br>
Postcode + Plaats: <?php echo $row['zip'] ?><br>
Telefoonnummer: <?php echo $row['tel1'] ?><br>
Telefoonnummer (mobiel): <?php echo $row['tel2'] ?><br>
E-mail: <?php echo $row['email'] ?><br>
</div>
</td>
</tr>
</table>
<?php
}
mysql_close($db);
//load footer
include ($rootdir . "opmaak/footer.inc.php");
?>
Kijk ook naar de kleurtjes.
Er is te veel om op te noemen wat mis gaat.
where '$persoon_id'
moet zijn where '$id'
dus:
zo klopt de query!
edit: dit was al gezegd zie ik nu...
Toevoeging op 21/11/2010 19:00:30:
de query kan je beter zo overnemen denk ik:
Gewijzigd op 21/11/2010 18:56:42 door Jason van der Zeeuw
- Selecteer wat je wilt hebben, gebruik niet *. Zo kan je later nog zien wat je ophaalt, SQL is self documenting, door naar de query te kijken weet je wat er gebeurd. Ook is theoretisch gezien * trager dan velden selecteren, aangezien de db engine eerst nog moet uitzoeken welke kolommen er in de tabel bevinden. Verder is het zo dat * een wildcard is, dus dat betekend dat de db engine niet per se alle kolommen hoeft terug te geven.
- die, niet gebruiken, val zelf dood neer.
- Gebruik mysql_fetch_assoc.
- Inline style is lastig in onderhoud.
En ik meen het over dat sql leren. Het is basic SQL.
Karl Karl op 21/11/2010 18:54:37:
Leer eerst html, dan php en dan sql.
Kijk ook naar de kleurtjes.
Er is te veel om op te noemen wat mis gaat.
Kijk ook naar de kleurtjes.
Er is te veel om op te noemen wat mis gaat.
Hmm, fijn dat je zoveel kennis hebt. Maar misschien zou het beter zijn als je die kennis zou delen in plaats van commentaar te leveren.
Toevoeging op 21/11/2010 20:03:16:
Jason van der Zeeuw op 21/11/2010 18:55:13:
de fout zit hem in de variabele
where '$persoon_id'
moet zijn where '$id'
dus:
zo klopt de query!
edit: dit was al gezegd zie ik nu...
Toevoeging op 21/11/2010 19:00:30:
de query kan je beter zo overnemen denk ik:
where '$persoon_id'
moet zijn where '$id'
dus:
zo klopt de query!
edit: dit was al gezegd zie ik nu...
Toevoeging op 21/11/2010 19:00:30:
de query kan je beter zo overnemen denk ik:
Dit heb ik al eens geprobeerd, mogelijk gaat het daarna nog fout aangezien ik deze melding krijg:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in profile.php on line 15
Unwanted Registrations op 21/11/2010 20:01:30:
Hmm, fijn dat je zoveel kennis hebt. Maar misschien zou het beter zijn als je die kennis zou delen in plaats van commentaar te leveren.
Karl Karl op 21/11/2010 18:54:37:
Leer eerst html, dan php en dan sql.
Kijk ook naar de kleurtjes.
Er is te veel om op te noemen wat mis gaat.
Kijk ook naar de kleurtjes.
Er is te veel om op te noemen wat mis gaat.
Hmm, fijn dat je zoveel kennis hebt. Maar misschien zou het beter zijn als je die kennis zou delen in plaats van commentaar te leveren.
Als je effe je doppen open doet zie je mijn reactie boven die van jou.
Een minimaal niveau moet wel op z'n plaats zijn.
Ik geef karl gelijk. Dit is allemaal basis dus lees gewoon even wat tuts en het komt wel in orde ;)
PHP jasper op 21/11/2010 20:04:04:
Ik geef karl gelijk. Dit is allemaal basis dus lees gewoon even wat tuts en het komt wel in orde ;)
Ik ben van mening dat je elkaar moet helpen indien mogelijk. Ongeacht of dingen goed of fout zijn, zou mijn kennis delen in plaats van commentaar geven.
En als je commentaar geeft, motiveer het tenminste maar dat gebeurt ook niet. Nogmaals, ik ben hier om te leren van mijn fouten en niet om commentaar te ontvangen.
Toevoeging op 21/11/2010 20:08:11:
Karl Karl op 21/11/2010 20:03:39:
Dit was mij al opgevallen... Ik denk een typfout... Dit tuts zijn niet erg nodig ofzo... Tenminste voor wat betreft de html.
Als je effe je doppen open doet zie je mijn reactie boven die van jou.
Een minimaal niveau moet wel op z'n plaats zijn.
Unwanted Registrations op 21/11/2010 20:01:30:
Hmm, fijn dat je zoveel kennis hebt. Maar misschien zou het beter zijn als je die kennis zou delen in plaats van commentaar te leveren.
Karl Karl op 21/11/2010 18:54:37:
Leer eerst html, dan php en dan sql.
Kijk ook naar de kleurtjes.
Er is te veel om op te noemen wat mis gaat.
Kijk ook naar de kleurtjes.
Er is te veel om op te noemen wat mis gaat.
Hmm, fijn dat je zoveel kennis hebt. Maar misschien zou het beter zijn als je die kennis zou delen in plaats van commentaar te leveren.
Dit was mij al opgevallen... Ik denk een typfout... Dit tuts zijn niet erg nodig ofzo... Tenminste voor wat betreft de html.
Als je effe je doppen open doet zie je mijn reactie boven die van jou.
Een minimaal niveau moet wel op z'n plaats zijn.
Toevoeging op 21/11/2010 20:09:14:
Vincent Huisman op 21/11/2010 19:10:20:
Ik krijg een leeg scherm zonder opmaak?
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
// i.d.p.v. dit:
$id = $_GET['persoon_id'];
$query = "SELECT * FROM personen WHERE '".$id."'";
// maak daarvan:
$query = "SELECT * FROM personen WHERE '".mysql_real_escape_string($_GET['persoon_id'])."'"; // mysql_real_escape_string voor sql - injection
?>
// i.d.p.v. dit:
$id = $_GET['persoon_id'];
$query = "SELECT * FROM personen WHERE '".$id."'";
// maak daarvan:
$query = "SELECT * FROM personen WHERE '".mysql_real_escape_string($_GET['persoon_id'])."'"; // mysql_real_escape_string voor sql - injection
?>
Gewijzigd op 21/11/2010 20:13:58 door Jasper DS
Unwanted Registrations op 21/11/2010 20:07:02:
Ik ben van mening dat je elkaar moet helpen indien mogelijk. Ongeacht of dingen goed of fout zijn, zou mijn kennis delen in plaats van commentaar geven.
En als je commentaar geeft, motiveer het tenminste maar dat gebeurt ook niet. Nogmaals, ik ben hier om te leren van mijn fouten en niet om commentaar te ontvangen.
PHP jasper op 21/11/2010 20:04:04:
Ik geef karl gelijk. Dit is allemaal basis dus lees gewoon even wat tuts en het komt wel in orde ;)
Ik ben van mening dat je elkaar moet helpen indien mogelijk. Ongeacht of dingen goed of fout zijn, zou mijn kennis delen in plaats van commentaar geven.
En als je commentaar geeft, motiveer het tenminste maar dat gebeurt ook niet. Nogmaals, ik ben hier om te leren van mijn fouten en niet om commentaar te ontvangen.
En wat wil je gemotiveerd hebben? Het belangrijkste is gemotiveerd.
Waarom het mis gaat, of hoe je het moet verbeteren vertel ik inderdaad niet, want zoals ik zeg, minimum basiskennis is vereist.
Ook is dit weer het zoveelste topic met dezelfde fouten. Als je gewoon een beetje rond kijkt, dan zul je vanzelf zien wat er beter moet.
Karl Karl op 21/11/2010 19:17:57:
- Geen tabellen gebruiken voor lay-out.
- Selecteer wat je wilt hebben, gebruik niet *. Zo kan je later nog zien wat je ophaalt, SQL is self documenting, door naar de query te kijken weet je wat er gebeurd. Ook is theoretisch gezien * trager dan velden selecteren, aangezien de db engine eerst nog moet uitzoeken welke kolommen er in de tabel bevinden. Verder is het zo dat * een wildcard is, dus dat betekend dat de db engine niet per se alle kolommen hoeft terug te geven.
- die, niet gebruiken, val zelf dood neer.
- Gebruik mysql_fetch_assoc.
- Inline style is lastig in onderhoud.
En ik meen het over dat sql leren. Het is basic SQL.
- Selecteer wat je wilt hebben, gebruik niet *. Zo kan je later nog zien wat je ophaalt, SQL is self documenting, door naar de query te kijken weet je wat er gebeurd. Ook is theoretisch gezien * trager dan velden selecteren, aangezien de db engine eerst nog moet uitzoeken welke kolommen er in de tabel bevinden. Verder is het zo dat * een wildcard is, dus dat betekend dat de db engine niet per se alle kolommen hoeft terug te geven.
- die, niet gebruiken, val zelf dood neer.
- Gebruik mysql_fetch_assoc.
- Inline style is lastig in onderhoud.
En ik meen het over dat sql leren. Het is basic SQL.
Dank je wel voor dit bericht. Dit komt in ieder geval beter over. Als voor het inline styling, dit is mijn manier van het maken van een website. Nogmaals, dit is maar tijdelijk. Wanneer ik klaar ben dan gaat alles in een .css bestand en is er geen inline styling meer te zien.
Dat van die * had ik al mee gekregen en had ik al aangepast. Maar omdat het (nog) niet werkte heb ik dit tijdelijk terug gezet.
De tabellen wil ik er ook uit hebben, het is soms een makkelijk tooltje voor mij.
Toevoeging op 21/11/2010 20:20:02:
Karl Karl op 21/11/2010 20:10:51:
En wat wil je gemotiveerd hebben? Het belangrijkste is gemotiveerd.
Waarom het mis gaat, of hoe je het moet verbeteren vertel ik inderdaad niet, want zoals ik zeg, minimum basiskennis is vereist.
Ook is dit weer het zoveelste topic met dezelfde fouten. Als je gewoon een beetje rond kijkt, dan zul je vanzelf zien wat er beter moet.
Unwanted Registrations op 21/11/2010 20:07:02:
Ik ben van mening dat je elkaar moet helpen indien mogelijk. Ongeacht of dingen goed of fout zijn, zou mijn kennis delen in plaats van commentaar geven.
En als je commentaar geeft, motiveer het tenminste maar dat gebeurt ook niet. Nogmaals, ik ben hier om te leren van mijn fouten en niet om commentaar te ontvangen.
PHP jasper op 21/11/2010 20:04:04:
Ik geef karl gelijk. Dit is allemaal basis dus lees gewoon even wat tuts en het komt wel in orde ;)
Ik ben van mening dat je elkaar moet helpen indien mogelijk. Ongeacht of dingen goed of fout zijn, zou mijn kennis delen in plaats van commentaar geven.
En als je commentaar geeft, motiveer het tenminste maar dat gebeurt ook niet. Nogmaals, ik ben hier om te leren van mijn fouten en niet om commentaar te ontvangen.
En wat wil je gemotiveerd hebben? Het belangrijkste is gemotiveerd.
Waarom het mis gaat, of hoe je het moet verbeteren vertel ik inderdaad niet, want zoals ik zeg, minimum basiskennis is vereist.
Ook is dit weer het zoveelste topic met dezelfde fouten. Als je gewoon een beetje rond kijkt, dan zul je vanzelf zien wat er beter moet.
Ik verwacht niet dat het me voorgezegd wordt maar in mijn ervaring op forums is vaak dat er iemand (niet persoonlijk bedoeld) is die zulk soort uitspraken doet en daarmee een ander irriteert. Maar goed, dit is niet het onderwerp.
Ik heb ook de variaties geprobeerd die hier aangedragen zijn en ik zit hierop al een tijd te googlen.
Misschien dat extra informatie helpt. Ik werk vanuit een virtuele computer/machine (windows XP) op Kubuntu 10.10. Misschien dat er verschil in zit hoe windows en linux hun bestanden opslaan?
Geen quotes om een tabelnaam.