Unknown column 'gerhard1' in 'where clause'

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Gerhard l

gerhard l

17/11/2010 10:44:16
Quote Anchor link
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:
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
$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');
    
    
}

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)
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
<?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>'
;        
}
            
    
    ?>

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?
 
PHP hulp

PHP hulp

21/11/2024 18:05:36
 

17/11/2010 10:49:44
Quote Anchor link
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.
 
Teun Hesseling

Teun Hesseling

17/11/2010 10:58:41
Quote Anchor link
het handige hier van is dat je ook ziet aan de kleurtjes wat er fout gaat + al dat geescape hoeft niet
 
Gerhard l

gerhard l

17/11/2010 10:58:52
Quote Anchor link
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
 
Chris -

Chris -

17/11/2010 11:27:12
Quote Anchor link
Er moeten quotes om de naam heen.. Dus
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
where naam = "gerhard1"
 
- Dave -

- Dave -

17/11/2010 11:28:10
Quote Anchor link
Vanaf regel 5 wordt alles opeens rood in script 1. Rara hoe kan dat.
 
Gerhard l

gerhard l

17/11/2010 11:37:07
Quote Anchor link
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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php ?>
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
 
Chris -

Chris -

17/11/2010 13:24:01
Quote Anchor link
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 ;-)
 
Gerhard l

gerhard l

17/11/2010 13:27:45
Quote Anchor link
@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!
 



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.