Where Clause???

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

F. Tack

F. Tack

02/04/2007 03:43:00
Quote Anchor link
Hoi.

Ik heb hier een forumpje gevonden, maar wil dat zelf een beetje uitbreiden! Nu heb ik volgende. Gebruikers kunnen zich registreren & Avatars instellen. Daar loopt het goed. Maar als je het forum wilt bekijken (en in dit geval een topic) zegt hij Unknown column 'Admin' in 'where clause'.

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
37
38
39
40
41
42
43
44
45
46
            <?php

if(!isset($_GET['id']))
{

echo 'dit kan niet, ga terug waar je vandaan kwam';
}
else{

$id=$_GET['id']; // dmv van dit regeltje  

include('../dbconfig.php');
// nu even verbinden met de database
$sql="SELECT * FROM vraag WHERE id=".$id.";";

$resultaat=mysql_query($sql)or die(mysql_error());
$rij=mysql_fetch_array($resultaat);

$naam = $rij['naam'];

$sql3="SELECT * FROM ForumGebruikers WHERE Username=".$naam.";";

$resultaat3=mysql_query($sql3)or die(mysql_error());
$rij3=mysql_fetch_array($resultaat3);
?>


<table width="700" border="0" align="center" cellpadding="0" cellspacing="0">
<tr><td bgcolor="#3f3f3f" width="90" align="top" valign="top"><br><center>
<img src="<?php echo $rij3['Avatar']; ?>" alt="<? echo $rij['naam']; ?>"><br>
<br></center></td>
<td align="top" valign="top">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr><td bgcolor="#3f3f3f"><font size="2"><strong>
&nbsp;&nbsp;<? echo $rij['topic'];?> <i>by <a href="mailto:<? echo $rij['email'];?>"><? echo $rij['naam'];?></a></i>
</strong></font></td></tr><tr><td>
<? echo $rij['bericht'];?><hr color="#3f3f3f">
</td></tr>
<tr><td><strong>Datum/tijd : </strong>
<? echo $rij['datumtijd'];?>
</td></tr></table></td></tr></table><BR>
<form name="form1" method="post" action="./reactie.php?id=<? echo $rij['id']; ?>">
<input type="submit" Value="Plaats Reactie">
</form><br>
<?

Ik weet niet hoe, maar hij vind die Username niet! Ook al staan ze in onze database. Wie kan mij helpen?

Thx
 
PHP hulp

PHP hulp

16/03/2025 05:36:20
 
Robert Deiman

Robert Deiman

02/04/2007 04:34:00
Quote Anchor link
Heeft met deze regel te maken:


$sql3="SELECT * FROM ForumGebruikers WHERE Username=".$naam.";";

Username bestaat uit een string (letters/cijfers) en niet uit een integer (een getal). Daarom moeten er quotes omheen in de query. Zo zou het wel goed moeten gaan:


$sql3="SELECT * FROM ForumGebruikers WHERE Username='".$naam."';";
 
F. Tack

F. Tack

02/04/2007 04:52:00
Quote Anchor link
Nu krijg ik die error nu meer, maar gewoon een wit vlak :p
 
- SanThe -

- SanThe -

02/04/2007 08:49:00
Quote Anchor link
Die ; in de query kan/moet weg.
 
F. Tack

F. Tack

02/04/2007 08:56:00
Quote Anchor link
Die is er uit wat weet ik dat het overbodig is. Maar het probleem is nu hij wil niets meer encrypten. Kan foutje zijn in HTML, maar als ik het test met robert zijn voorbeeld werkt het wel :) Thx alvast

EDIT: Problem verholpen :) had een } te weinig ;)
Gewijzigd op 01/01/1970 01:00:00 door F. Tack
 
- SanThe -

- SanThe -

02/04/2007 09:08:00
Quote Anchor link
Errors?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);

// rest van je script
?>
 
F. Tack

F. Tack

02/04/2007 09:33:00
Quote Anchor link
Nu ik hier toch zit. Ik haal een table uit SQL. Maar nu is mijn vraag. Als die nu niet bestaat, hoe laat ik dat PHP dan weten? ik dacht met een if maar zit vast :s
 
- SanThe -

- SanThe -

02/04/2007 09:37:00
Quote Anchor link
F. Tack schreef op 02.04.2007 09:33:
........Ik haal een table uit SQL........ Als die nu niet bestaat,......

Wat bedoel je daarmee?
 
Frank -

Frank -

02/04/2007 11:39:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
$query
= "SELECT * FROM tabelnaam";
$result = mysql_query($query);

if($result){ // query gelukt
  // doe iets, bv. mysql_fetch_assoc() e.d.

}
else { // query mislukt
  echo 'Query mislukt vanwege de volgende fout: '.mysql_query();
}

?>

Verder kan het eigenlijk nooit voorkomen dat jij niet weet welke tabellen er in jouw database staan. Dit mag alleen voorkomen wanneer je PHPMyAdmin probeert na te maken, in alle andere systemen weet jij 100% zeker dat een tabel wel of niet bestaat. Het datamodel kan namelijk uitsluitend wijzigen doordat je met onderhoud o.i.d. bezig bent, maar dan moet je toch opnieuw testen.
 
F. Tack

F. Tack

02/04/2007 13:22:00
Quote Anchor link
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<?
// Ask For ID
$id = $_GET['id'];

// Connect & Search Message ID
$sql = "SELECT * FROM vraag WHERE id='".$id."'";
$resultaat = mysql_query($sql)or die(mysql_error());
$rij = mysql_fetch_array($resultaat);

// Check For Account's
$naam = $rij['naam'];

$sql2 = "SELECT * FROM ForumGebruikers WHERE Username='".$naam."'";
$resultaat2 = mysql_query($sql2)or die(mysql_error());
$rij2 = mysql_fetch_array($resultaat2);

{

?>

<table width="700" border="0" align="center" cellpadding="0" cellspacing="0">
<tr><td bgcolor="#3f3f3f" width="90" align="top" valign="top"><center>
<font size="2"><b><a href="mailto:<? echo $rij['email'];?>"><? echo $rij['naam']; ?></a></b></font></center>
<i>Berichten: <? echo $rij2['Berichten']; ?><br><br>
<center>
<img src="<? echo $rij2['Avatar']; ?>" alt="<? echo $rij['naam']; ?>" width="64" height="64"></center>
<br></center></td>
<td align="top" valign="top">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr><td bgcolor="#3f3f3f"><font size="2"><strong>
&nbsp;&nbsp;<? echo $rij['topic'];?> <i></i>
</strong></font></td></tr><tr><td>
<? echo $rij['bericht'];?><hr color="#3f3f3f">
</td></tr>
<tr><td><strong>Datum/tijd : </strong>
<? echo $rij['datumtijd'];?>
</td></tr></table></td></tr></table><BR>
<form name="form1" method="post" action="./reactie.php?id=<? echo $rij['id']; ?>">
<input type="submit" Value="Plaats Reactie">
</form><br>
<?
// Select Reaction
$sql3 = "SELECT * FROM antwoord WHERE vraag_id='".$id."'";
$resultaat3 = mysql_query($sql3)or die(mysql_error());
$rij3 = mysql_fetch_array($resultaat3);

// Check Username For Avatar
$naam2 = $rij2['antwoord_naam'];
$sql4 = "SELECT * FROM ForumGebruikers WHERE Username='".$naam2."'";
$resultaat4 = mysql_query($sql4);

// Load Guest Account
$naam3 = "Gast";
$sql5 = "SELECT * FROM ForumGebruikers WHERE Username='".$naam3"'";
$resultaat5 = mysql_query($sql5);

// Checken of gebruikersnaam bestaat Anders Account Gast
if($resultaat6)
 {

  $rij4 = mysql_fetch_array($resultaat4);
 }

else {
  $rij4 = mysql_fetch_array($resultaat5);
 }
 {

?>

<table width="700" border="0" align="center" cellpadding="0" cellspacing="0">
<tr><td bgcolor="#3f3f3f" width="90" align="top" valign="top"><center><font size="2"><b><a href="mailto:<? echo $rij3['antwoord_email'];?>"><? echo $rij3['antwoord_naam']; ?></a></b></font></center>
<i>Berichten: <? echo $rij4['Berichten']; ?><br><br>
<center>
<img src="<? echo $rij4['Avatar']; ?>" alt="<? echo $rij3['antwoord_naam']; ?>" width="64" height="64"></center>
<br></center></td>
<td align="top" valign="top">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr><td bgcolor="#3f3f3f"><font size="2"><strong>
&nbsp;&nbsp;RE: <? echo $rij['topic']; ?>
</strong></font></td></tr><tr><td>
<? echo $rij3['antwoord_antwoord']; ?><hr color="#3f3f3f">
</td></tr>
<tr><td><strong>Datum/tijd : </strong>
<? echo $rij3['antwoord_datumtijd']; ?>
</td></tr></table></td></tr></table>
<?
}
}
}

?>


Ik vind dus niet het probleem. Hij wil niet de pagina geven (alleen wit, zelfs de css laad hij niet)! Ik heb alles nagekeken maar niks gevonden :(
 
Frank -

Frank -

02/04/2007 13:57:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?
$resultaat
= mysql_query($sql)or die(mysql_error());
$rij = mysql_fetch_array($resultaat);

// Check For Account's
$naam = $rij['naam'];
?>

En waar controleer jij of de query wel resultaten heeft opgeleverd? In jouw script hebt je geen enkele garantie dat $naam een inhoud zal krijgen, dat is dus vragen om problemen.

Controleer dus met mysql_num_rows() hoeveel records er zijn opgehaald en ga daarna pas fetchen, het heeft geen zin om dat eerder te doen.

Met $id = $_GET['id']; vraag je/smeek je om SQL-injection. Het is maar waar je van houdt.
 
F. Tack

F. Tack

03/04/2007 02:53:00
Quote Anchor link
Ik wist dat het ging gebeuren voor die $naam. Maar het scriptje is nog niet af. Ik ben nog wat een leek, maar waarom juist eerst mysql_num_rows?

Het probleem is gewoon dat mijn pagina blank is :)

Code voor de $naam
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
<?
include('../dbconfig.php');

// Get ID
$id=$_GET['id'];

// Check Database
$sql="SELECT * FROM vraag WHERE id='".$id."'";
$resultaat=mysql_query($sql);
$rij=mysql_fetch_array($resultaat);

// Get Username
$naam=$rij['naam'];

// Connect Users Table
$sql6="SELECT * FROM ForumGebruikers WHERE Username='".$naam."'";
$resultaat6=mysql_query($sql6);

// Check for errors
if($resultaat6)
{

 $naam3=$rij['naam'];
}
else {
 $naam3="Gast";
}

 
$sql2="SELECT * FROM ForumGebruikers WHERE Username='".$naam3."'";
$resultaat2=mysql_query($sql2);
$rij2=mysql_fetch_array($resultaat2);

{

?>


De error moet ergens in onderstaande code zitten. Als ik die verwijder van de pagina werkt alles weer :s
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
<?
$sql3
="SELECT * FROM antwoord WHERE vraag_id='".$id."'";
$resultaat3=mysql_query($sql3)or die(mysql_error());
$rij3=mysql_fetch_array($resultaat3);

$naam2=$rij3['antwoord_naam'];
$sql4="SELECT * FROM ForumGebruikers WHERE Username='".$naam2."'";
$resultaat4=mysql_query($sql4);

$naam3="Gast";
$sql5="SELECT * FROM ForumGebruikers WHERE Username='".$naam3"'";
$resultaat5=mysql_query($sql5);

if($resultaat4)
 {

  $rij4 = mysql_fetch_array($resultaat4);
 }

else {
  $rij4 = mysql_fetch_array($resultaat5);
 }
 {

?>
Gewijzigd op 01/01/1970 01:00:00 door F. Tack
 
- SanThe -

- SanThe -

03/04/2007 08:46:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);

// rest van je script
?>

Heb je dit nou al bovenin je script gezet?
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
 
F. Tack

F. Tack

03/04/2007 16:50:00
Quote Anchor link
Die staat erin. Maar nog krijg ik een witte pagina
 
F. Tack

F. Tack

03/04/2007 19:53:00
Quote Anchor link
BUMP
 
Robert Deiman

Robert Deiman

03/04/2007 19:55:00
Quote Anchor link
Zorg ook dat elke regel met mysql_query(); op de volgende manier wordt opgebouwd, althans tijdens het bouwen:

$var=mysql_query($sql) or trigger_error(mysql_error());

Zo zal je ook fouten in je MySQL te zien krijgen die er vast wel in zitten!!
 
Martijn B

Martijn B

03/04/2007 20:03:00
Quote Anchor link
Paar puntjes:

1. Worden er log bestanden aangemaakt, zoja ff kijken...

2. Zet eens dit in 1 van je scripts:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo $foo + 1;
?>


Je zou een error moeten krijgen. Gebeurd dit dan worden errors van je script gewoon weergegeven. Je script bevat dus geen fouten.

3. Plaats eens strategisch een paar:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo 'We zijn nu op regel: ' . __LINE__;
?>


Zo kun je precies zien waar PHP komt en waar niet.
Gewijzigd op 01/01/1970 01:00:00 door Martijn B
 
F. Tack

F. Tack

03/04/2007 21:01:00
Quote Anchor link
Error gevonden en verholpen. Maar nu wilt hij volgende dinge niet doen.

Ik vraag als de username niet bestaat, dan de account Gast te gebruiken. Nu gebeurd dit niet :( 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
<?
$naam2
=$rij3['antwoord_naam'];
$sql4="SELECT * FROM ForumGebruikers WHERE Username='".$naam2."'";
$resultaat4=mysql_query($sql4) or trigger_error(mysql_error());

$naam3="Gast";
$sql5="SELECT * FROM ForumGebruikers WHERE Username='".$naam3."'";
$resultaat5=mysql_query($sql5) or trigger_error(mysql_error());

if($resultaat4)
 {

  $rij4 = mysql_fetch_array($resultaat4);
 }

else {
  $rij4 = mysql_fetch_array($resultaat5);
 }

?>
Gewijzigd op 01/01/1970 01:00:00 door F. Tack
 
Frank -

Frank -

03/04/2007 22:47:00
Quote Anchor link
Waar is de controle? Nu voer je gewoon 2 queries uit (en je voert ze altijd allemaal uit) zonder dat dit ook maar iets extra oplevert. De controle op $resultaat4 is ook alleen maar of de query is gelukt, niet of er resultaten zijn.

Kortom, de volgorde is niet correct en de controles zijn verkeerd.

Tip: Doe iets aan je naamgevingen, $naam3, $rij4, etc. etc., het is vragen om problemen. Gebruik uitsluitend nummers wanneer het echt niet anders kan, in bovenstaand script is het volkomen overbodig om te gaan nummeren.
 
F. Tack

F. Tack

04/04/2007 01:12:00
Quote Anchor link
Thx om me erop te wijzen voor die controle's :) Die heb ik er nu wel degelijk ingezet. Die nummers doe ik voor mij het gemakkelijk te maken. Ik ben nog niet zo goed in PHP maar ik wil het me niet te moeilijk maken.

Owjah, nu ziet het script er als volgt uit!
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
<?
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);

include('../dbconfig.php');

$id=$_GET['id'];

$sql="SELECT * FROM vraag WHERE id='".$id."'";
$resultaat=mysql_query($sql) or trigger_error(mysql_error());
$rij=mysql_fetch_array($resultaat);

$naam=$rij['naam'];

$sql6="SELECT * FROM ForumGebruikers WHERE Username='".$naam."'";
$resultaat6=mysql_query($sql6) or trigger_error(mysql_error());

if(mysql_num_rows($resultaat6) > 0)
{

 $naam3=$rij['naam'];
}
else {
 $naam3="Gast";
}

 
$sql2="SELECT * FROM ForumGebruikers WHERE Username='".$naam3."'";
$resultaat2=mysql_query($sql2) or trigger_error(mysql_error());
$rij2=mysql_fetch_array($resultaat2);

{

?>

<table width="700" border="0" align="center" cellpadding="0" cellspacing="1">
<tr><td bgcolor="#3f3f3f" width="90" align="top" valign="top"><center>
<font size="2"><b><a href="mailto:<? echo $rij['email'];?>"><? echo $rij['naam']; ?></a></b></font></center><br>
<center>
<img src="<? echo $rij2['Avatar']; ?>" alt="<? echo $rij['naam']; ?>" width="64" height="64"></center>
<br></center></td>
<td align="top" valign="top">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr><td bgcolor="#3f3f3f"><font size="2"><strong>
&nbsp;&nbsp;<? echo $rij['topic'];?> <i></i>
</strong></font></td></tr><tr><td>
<? echo $rij['bericht'];?><hr color="#3f3f3f">
</td></tr>
<tr><td><strong>Datum/tijd : </strong>
<? echo $rij['datumtijd'];?>
</td></tr></table></td></tr></table><BR>
<form name="form1" method="post" action="./reactie.php?id=<? echo $rij['id']; ?>">
<input type="submit" Value="Plaats Reactie">
</form><br>
<?
}

$sql3="SELECT * FROM antwoord WHERE vraag_id='".$id."'";
$resultaat3=mysql_query($sql3) or trigger_error(mysql_error());
$rij3=mysql_fetch_array($resultaat3);

$naam2=$rij3['antwoord_naam'];
$sql4="SELECT * FROM ForumGebruikers WHERE Username='".$naam2."'";
$resultaat4=mysql_query($sql4) or trigger_error(mysql_error());

$naam3="Gast";
$sql5="SELECT * FROM ForumGebruikers WHERE Username='".$naam3."'";
$resultaat5=mysql_query($sql5) or trigger_error(mysql_error());

if(mysql_num_rows($resultaat4) > 0)
 {

  $rij4 = mysql_fetch_array($resultaat4);
 }

else {
  $rij4 = mysql_fetch_array($resultaat5);
 }


if(mysql_num_rows($resultaat3) > 0)
 {

?>

<table width="700" border="0" align="center" cellpadding="0" cellspacing="1">
<tr><td bgcolor="#3f3f3f" width="90" align="top" valign="top"><center><font size="2"><b><a href="mailto:<? echo $rij3['antwoord_email'];?>"><? echo $rij3['antwoord_naam']; ?></a></b></font></center><br>
<center>
<img src="<? echo $rij4['Avatar']; ?>" alt="<? echo $rij3['antwoord_naam']; ?>" width="64" height="64"></center>
<br></center></td>
<td align="top" valign="top">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr><td bgcolor="#3f3f3f"><font size="2"><strong>
&nbsp;&nbsp;RE: <? echo $rij['topic']; ?>
</strong></font></td></tr><tr><td>
<? echo $rij3['antwoord_antwoord']; ?><hr color="#3f3f3f">
</td></tr>
<tr><td><strong>Datum/tijd : </strong>
<? echo $rij3['antwoord_datumtijd']; ?>
</td></tr></table></td></tr></table>
<?
}
else {
?>

Er zijn geen reacties gevonden!
<?
}
?>
Gewijzigd op 01/01/1970 01:00:00 door F. Tack
 
Robert Deiman

Robert Deiman

04/04/2007 08:32:00
Quote Anchor link
Ik denk dat het hier al mis gaat met de resultaten en dat is ook meteen de query die je niet controleerd:

$sql="SELECT * FROM vraag WHERE id='".$id."'";

Als je het goed hebt gemaakt is id een numeric veld. (int, smallint, tiniyint) Deze query zal dan ook nooit het gewenste resultaat geven, omdat vanwege de enkele quotes in je query de waarde van $id als een string (stukje tekst) wordt behandeld.

Zorg ook bij deze query voor de controle die je bij de rest van de querys ook hebt gemaakt.

En verander deze regel hierin:

$sql="SELECT * FROM vraag WHERE id=".$id;
 



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.