Unknown column 'gerhard1' in 'where clause'
PHPers ik zit met een probleempje, ik heb deze foutmelding wel eens vaker gehad, maar nu kom ik er zelf niet uit. Ik was bezig met een klein soort marktplaats achtige site, je kan je product dan toevoegen, en op het moment dat hij een product toevoegt maakt hij direct een .php bestand aan met de id van het product, waar hij dan heen gestuurd word zodat hij direct zijn product ziet. Als de naam van het product een getal is doet ie het gewoon, maar wanneer het een letter word krijg ik een Unknown column 'gerhard1' in 'where clause' foutmelding, dus ik dacht dat ik ergens een INT had ingesteld wat varchar moest zijn, maar dat kon ik ook niet vinden, maar ik zal jullie de code even laten zien:
deze code staat in het add product script, en tegelijkertijd zet hij het nu in een database. Hij maakt het bestandje keurig aan en in het bestandje staan dan":
maar daar krijg ik dus die error dus ik dacht ik probeer:
$query = "SELECT * FROM products WHERE naam='gerhard1'";
of
$query = SELECT * FROM products WHERE naam='gerhard1';
maar geen resultaat
en de column naam bestaat wel maar het lijkt wel alsof hij zoekt naar een kolom met gerhard1?
in de phpmyadmin is het product wel netjes toegevoegt
2410 gerhard1 gerhard 1.00 2010-11-17 04:30:19 gerhard gerhard 19
en als ik op view all click laat hij ook gewoon alle producten zien, ik snap niet zo goed waar het nu misgaat? iemand tips?
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
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
$myFile = $_SESSION['productid'].".php";
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = '<?php
include_once "../../connect.php"; //verbinding maken
$ab = $_SESSION[\'aangemaakt\'];
$query = "SELECT * FROM products WHERE naam='.$_POST['naam'].'";
$sql = mysql_query($query) or die ( mysql_error( ) );
//query is uitgevoerd
while($record = mysql_fetch_object($sql)){
echo "<table border=2>";
echo "<tr><td>Code</td><td>".$record->id."</td></tr>";
echo "<tr><td>Naam</td><td>".$record->naam."</td></tr>";
echo "<tr><td>Omschrijving</td><td>".$record->omschrijving."</td></tr>";
echo "<tr><td>platform</td><td>".$record->platvorm."</td></tr>";
echo "<tr><td>genre</td><td>".$record->genre."</td></tr>";
echo "<tr><td>datum</td><td>".$record->date."</td></tr>";
echo "<tr><td>Prijs</td><td>".$record->prijs."</td></tr>";
echo \'<a href="../all/">alles bekijken</a><br>
<a href="../test/">toevoegen</a>\';
}
?>';
fwrite($fh, $stringData);
fclose($fh);
header('Location: '.$_SESSION['productid'].'.php');
}
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = '<?php
include_once "../../connect.php"; //verbinding maken
$ab = $_SESSION[\'aangemaakt\'];
$query = "SELECT * FROM products WHERE naam='.$_POST['naam'].'";
$sql = mysql_query($query) or die ( mysql_error( ) );
//query is uitgevoerd
while($record = mysql_fetch_object($sql)){
echo "<table border=2>";
echo "<tr><td>Code</td><td>".$record->id."</td></tr>";
echo "<tr><td>Naam</td><td>".$record->naam."</td></tr>";
echo "<tr><td>Omschrijving</td><td>".$record->omschrijving."</td></tr>";
echo "<tr><td>platform</td><td>".$record->platvorm."</td></tr>";
echo "<tr><td>genre</td><td>".$record->genre."</td></tr>";
echo "<tr><td>datum</td><td>".$record->date."</td></tr>";
echo "<tr><td>Prijs</td><td>".$record->prijs."</td></tr>";
echo \'<a href="../all/">alles bekijken</a><br>
<a href="../test/">toevoegen</a>\';
}
?>';
fwrite($fh, $stringData);
fclose($fh);
header('Location: '.$_SESSION['productid'].'.php');
}
deze code staat in het add product script, en tegelijkertijd zet hij het nu in een database. Hij maakt het bestandje keurig aan en in het bestandje staan dan":
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
include_once "../../connect.php"; //verbinding maken
$ab = $_SESSION['aangemaakt'];
$query = "SELECT * FROM products WHERE naam=gerhard1";
$sql = mysql_query($query) or die ( mysql_error( ) );
//query is uitgevoerd
while($record = mysql_fetch_object($sql)){
echo "<table border=2>";
echo "<tr><td>Code</td><td>".$record->id."</td></tr>";
echo "<tr><td>Naam</td><td>".$record->naam."</td></tr>";
echo "<tr><td>Omschrijving</td><td>".$record->omschrijving."</td></tr>";
echo "<tr><td>platform</td><td>".$record->platvorm."</td></tr>";
echo "<tr><td>genre</td><td>".$record->genre."</td></tr>";
echo "<tr><td>datum</td><td>".$record->date."</td></tr>";
echo "<tr><td>Prijs</td><td>".$record->prijs."</td></tr>";
echo '<a href="../all/">alles bekijken</a><br>
<a href="../test/">toevoegen</a>';
}
?>
include_once "../../connect.php"; //verbinding maken
$ab = $_SESSION['aangemaakt'];
$query = "SELECT * FROM products WHERE naam=gerhard1";
$sql = mysql_query($query) or die ( mysql_error( ) );
//query is uitgevoerd
while($record = mysql_fetch_object($sql)){
echo "<table border=2>";
echo "<tr><td>Code</td><td>".$record->id."</td></tr>";
echo "<tr><td>Naam</td><td>".$record->naam."</td></tr>";
echo "<tr><td>Omschrijving</td><td>".$record->omschrijving."</td></tr>";
echo "<tr><td>platform</td><td>".$record->platvorm."</td></tr>";
echo "<tr><td>genre</td><td>".$record->genre."</td></tr>";
echo "<tr><td>datum</td><td>".$record->date."</td></tr>";
echo "<tr><td>Prijs</td><td>".$record->prijs."</td></tr>";
echo '<a href="../all/">alles bekijken</a><br>
<a href="../test/">toevoegen</a>';
}
?>
maar daar krijg ik dus die error dus ik dacht ik probeer:
$query = "SELECT * FROM products WHERE naam='gerhard1'";
of
$query = SELECT * FROM products WHERE naam='gerhard1';
maar geen resultaat
en de column naam bestaat wel maar het lijkt wel alsof hij zoekt naar een kolom met gerhard1?
in de phpmyadmin is het product wel netjes toegevoegt
2410 gerhard1 gerhard 1.00 2010-11-17 04:30:19 gerhard gerhard 19
en als ik op view all click laat hij ook gewoon alle producten zien, ik snap niet zo goed waar het nu misgaat? iemand tips?
Waarom schrijf je de rotzooi weg naar bestand?
SQL injections mogelijk.
Selecteer welke velden je wilt hebben. Gebruik niet *.
Die moet je niet gebruiken.
Objecten fetchen is de grootste onzin die er bestaat.
SQL injections mogelijk.
Selecteer welke velden je wilt hebben. Gebruik niet *.
Die moet je niet gebruiken.
Objecten fetchen is de grootste onzin die er bestaat.
het handige hier van is dat je ook ziet aan de kleurtjes wat er fout gaat + al dat geescape hoeft niet
nou ik wil voor elk product soort van eigen pagina dat als je zon lijst hebt met alleen titels, dat ze daar op klikken en dan op de pagina terecht komen met alle informate, en voordat ze naar de db en geschreven worden gebruik ik mysql_real_escape_string. en ik weet niet waarom maar gebruik meestal fetch sorry:P
Toevoeging op 17/11/2010 10:59:30:
@Teun vertel me dan wat er fout gaat;)
Toevoeging op 17/11/2010 11:16:45:
@karl ik zal de * veranderen.
alleen ik snap gewoon niet waar die Unknown column 'gerhard1' in 'where clause' weg komt
Toevoeging op 17/11/2010 10:59:30:
@Teun vertel me dan wat er fout gaat;)
Toevoeging op 17/11/2010 11:16:45:
@karl ik zal de * veranderen.
alleen ik snap gewoon niet waar die Unknown column 'gerhard1' in 'where clause' weg komt
Vanaf regel 5 wordt alles opeens rood in script 1. Rara hoe kan dat.
juist chris dat was het thanks
$query = "SELECT * FROM products WHERE naam=\''.$_POST['naam'].'\'";
levert nu op:
$query = "SELECT * FROM products WHERE naam='admin'";
nu de * nog veranderen, maar als ik mysql_real_escape_string gebruik is dat genoeg tegen sql injectie?
Toevoeging op 17/11/2010 11:39:20:
@dave iedereen zit altijd te zeuren: plaats relevante code, nu plaats ik relevante code maar kloppen de kleuren niet, tja daar kan ik dan ook nix aan doen. kijk dan zelf ook even, hij moet een bestand writen dus moet ik die en shit wel escapen anders gaat ie het uitvoeren in dezelfde pagina terwijl hij het moet schrijven!
$query = "SELECT * FROM products WHERE naam=\''.$_POST['naam'].'\'";
levert nu op:
$query = "SELECT * FROM products WHERE naam='admin'";
nu de * nog veranderen, maar als ik mysql_real_escape_string gebruik is dat genoeg tegen sql injectie?
Toevoeging op 17/11/2010 11:39:20:
@dave iedereen zit altijd te zeuren: plaats relevante code, nu plaats ik relevante code maar kloppen de kleuren niet, tja daar kan ik dan ook nix aan doen. kijk dan zelf ook even, hij moet een bestand writen dus moet ik die en shit wel escapen anders gaat ie het uitvoeren in dezelfde pagina terwijl hij het moet schrijven!
Gewijzigd op 17/11/2010 11:42:28 door gerhard l
Als je dubbele quotes gebruikt, voer je altijd de code uit. Met enkele quotes niet. Leer jezelf dat dus aan, dat scheelt in het vervolg.
Overigens bedoelde Dave (denk ik) dat je de fout kan zien als je naar de kleuren kijkt. Hij zegt niets over de relevante code of iets. Gebruik een editor met syntax-highlighting zodat je dat in het vervolg zelf al kan zien ;-)
Overigens bedoelde Dave (denk ik) dat je de fout kan zien als je naar de kleuren kijkt. Hij zegt niets over de relevante code of iets. Gebruik een editor met syntax-highlighting zodat je dat in het vervolg zelf al kan zien ;-)
@chris ja bedankt voor de uitleg, maar ik begreep dave in ieder geval anders, want hij heeft over vanaf regel 5 word alles rood, ik gebruik notepad++ maar ik zie ook wel dat het dan buiten werking was, ik bedoel als hij zelf gekeken had wat er gevraagd werd, en niet zomaar reageren in het niets, want dat alles rood was klopt wel omdat dat stukje gewrite moest worden en niet uitgevoerd. in ieder gevalt bedankt iedereen!




