Tobias Hahner: Unknown column 'XXX' in 'field list'

Beitrag lesen

Hallihallo!

  		$ysql     = 'INSERT INTO ' . ADJUSTMENTS_TABLE . ' (adjustment_value, adjustment_date, member_name, adjustment_reason, adjustment_added_by, adjustment_updated_by, adjustment_group_key, raid_name)  
  			    VALUES ($decay_round, $time, $xname, $adjustment_reason, $decay_added_by, NULL, $group_key, $event_post)';  



  		$yresult  = $db->sql_query($ysql);  
  		if (!$yresult) {  
  		   die("Konnte die Abfrage ADJUSTMENT TABLE nicht ausführen: " . mysql_error());  
  		}  

>   
>   
> Fehlermeldung:  
>   
>  Unknown column '$decay\_round' in 'field list'  
>   
> PHP 5.3x  
  
Dieser Fehler hat hier nur bedingt etwas mit PHP zu tun, die Meldung wird direkt von MySQL "durchgeschleift".  
Er besagt, dass es in der Tabelle, die Du hier ansprichst, keine Spalte mit dem Namen '$decay\_round' gibt. Die anderen hier angegebenen Spalten wird MySQL wahrscheinlich auch nicht finden, aber beim jetzigen Stand bricht die Datenbank vorher schon ab.  
  
Ich schrieb "bedingt etwas mit PHP zu tun", weil:  
Du scheinst hier davon auszugehen, dass [innerhalb von single quotes](http://www.php.net/manual/de/language.types.string.php#language.types.string.syntax.single) gefundene Variablennamen durch ihren Wert ersetzt werden. Dem ist aber nicht so.  
Wenn Du diesen Mechanismus nutzen willst, bieten sich stattdessen [double quotes](http://www.php.net/manual/de/language.types.string.php#language.types.string.syntax.double) an.  
  
Aus der Tatsache, dass Du, wie Du schriebst, schon lange versuchst, den Fehler zu finden, schliesse ich, dass es Dir an Erfahrung, evtl auch an Wissen mangelt.  
Daher gebe ich Dir einmal völlig ungefragt den Tip, Dich mit dem wahrscheinlich wichtigsten Sicherheitsproblem, dem [Kontextwechsel](http://wiki.selfhtml.org/wiki/Artikel:Kontextwechsel) vertraut zu machen. Man kann damit nicht früh genug anfangen, denn sonst baut man sich ganz schnell Sicherheitslöcher, die grösser sind als Windows, ICQ und ein offener Waffenschrank gemeinsam.  
Ganz nebenbei lernst Du in diesem Artikel auch, wie man eine Abfrage, wie Du sie hier bauen möchtest, nicht nur sicher, sondern auch übersichtlich zusammensetzen kannst (achte auf den Teil mit  sprintf).  
  
Ich hoffe, damit konnte ich helfen.  
  
  
  
Beste Grüsse,  
    Tobias Hahner