Tobi: Variablen in mysql UPDATE

Moin,

Also mein Problem ist relativ einfach.
Ich möchte gerne mit

$query = "UPDATE geraete SET $woche = $a WHERE id= $site";  
mysql_query($query);

meine Datenbank ändern.
Das Problem ist, wenn ich anstelle der Variablen $woche den wert der Spalte angebe

bsp:
 ~~~php $query = "UPDATE geraete SET woche10 = $a WHERE id= $site";
mysql_query($query);

  
Funktioniert die ganze geshichte.  
Warum also nicht mit der Variablen, wenn da definitiv (mit echo überprüft) das selbe drin steht.  
  
Und dann der 2te Punkt, ich würde aufgrund der einfacheren Handhabung die variable nicht mit woche10 sondern nur mit 10 deklariernen, das es dann also so aussieht:  
  
~~~php
$query = "UPDATE geraete SET 10 = $a WHERE id= $site";  
mysql_query($query);

wie soll das funktionieren.

Danke schonmal

  1. Hi!

    Ich möchte gerne mit

    $query = "UPDATE geraete SET $woche = $a WHERE id= $site";

    mysql_query($query);

    
    > meine Datenbank ändern.  
      
    Wenn du es mal präziser ausdrückst, möchtest du einen Feldinhalt ändern. (Zumindest verwendest du ein SQL-Statement, das dies macht. Vermutlich entspricht das auch deiner Intention.)  
      
    
    > Das Problem ist, wenn ich anstelle der Variablen $woche den wert der Spalte angebe  
    > Funktioniert die ganze geshichte.  
    > Warum also nicht mit der Variablen, wenn da definitiv (mit echo überprüft) das selbe drin steht.  
      
    MySQL bekommt das fertige Statement zu sehen. Also schau dir an, wie dieses aussieht und nicht nur die Zwischenschritte. Zudem solltest du erklären/herausfinden, was das "funktioniert nicht" konkret heißt.  
      
    
    > Und dann der 2te Punkt, ich würde aufgrund der einfacheren Handhabung die variable nicht mit woche10 sondern nur mit 10 deklariernen, das es dann also so aussieht:  
    > `$query = "UPDATE geraete SET 10 = $a WHERE id= $site";`{:.language-php}  
    > wie soll das funktionieren.  
      
    Genau, wie soll das funktionieren? Wie soll MySQL raten, dass du mit 10 das Feld mit dem Namen woche10 meinst? Und wie soll es außerdem erraten, dass du keine Zahl meinst, mit der es eine Berechnung anstellen soll?  
      
    Warum willst du eine Kurzform verwenden? Wenn du an anderer Stelle eine Kurzform verwenden willst, dann musst du dir etwas Code schreiben, der daraus für das DBMS eine Langform erstellt.  
      
    Zusatzfrage: Warum heißt das da überhaupt woche10? Willst du damit sagen, dass du noch weitere 52 Felder hast, insgesamt durchnummeriert von 1 bis 53 (oder so etwas ähnliches)?  
      
      
    Lo!
    
  2. Hello,

    der ganze Trick wird vermutlich sein, dass Du das Statement nicht sofort zusammenbaust beim Erstellen des Programmcodes, sondern erst zur Laufzeit des Programmes. Dafür baust Du Dir eine Funktion, die Du dann zur Leufzeit mit den passenden Argumenten gefüttert aufrufst.

    http://www.php.net/manual/en/language.functions.php

    zu finden über:
    http://php.net/manual/en/langref.php

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de