bjacke: Variable in SQL Befehl

Hallo,
habe follgenden Text:
$conn = @mysql_connect($server, $user, $pass);
@mysql_select_db($datenbank, $conn);

while($row = mysql_fetch_assoc($result)){
$value=mysql_query("UPDATE homepage\_delphi\_dl SET dl\_program\_count = dl\_program\_count+ '1' WHERE dl\_program = "$row['dl_program']" ");
}

Bei "$row['dl_program']" scheint der Fehler zu liegen, normalerweise schreibt man da ja z.B. 'Test' hin. Geht das jetzt auch mit einer Variable?

  1. Hello,

    while($row = mysql_fetch_assoc($result))
    {
      $value = mysql_query("UPDATE homepage\_delphi\_dl SET dl\_program\_count = dl\_program\_count+ '1' WHERE dl\_program = "$row['dl_program']" ");
    }

    Was sollte das denn werden?

    So würde es normalerweise aussehen:

    Server-Verbindung herstellen
    Fehlerbehandlung
    Datenbank öffnen
    Fehlerbehandlung
    Query-String festlegen
    Query durchführen
    Fehlerbehandlung
    Query auswerten

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
  2. Hallo bjacke,

    $conn = @mysql_connect($server, $user, $pass);
    @mysql_select_db($datenbank, $conn);

    warum unterdrückst du mögliche Fehlermeldungen ohne danach zu prüfuen, ob ein Fehler aufgetreten ist?

    $value=mysql_query("UPDATE homepage\_delphi\_dl SET dl\_program\_count = dl\_program\_count+ '1' WHERE dl\_program = "$row['dl_program']" ");

    Die Backticks sind in dem Fall nicht notwendig, außerdem ist es von Vorteil den Query erst in eine Variable zu schreiben und die Variable dann der Funktion mysql_query zu übergeben (du kannst dir dann den Query zur Kontrolle ausgeben lassen).

    Bei "$row['dl_program']" scheint der Fehler zu liegen, normalerweise schreibt man da ja z.B. 'Test' hin. Geht das jetzt auch mit einer Variable?

    schau dir mal auf http://de3.php.net/language.types.array#language.types.array.foo-bar (etwas runterscrollen, der Kasten "Weitere Beispiele zur Veranschaulichung dieses Sachverhalts:") an, wie man Arrayelemente in Strings einbindet. Ich würde dir aber empfehlen eine Verkettung zu verwenden:
      $query = "UPDATE ... WHERE dl_program = ".$row['dl_program'];

    je nach dem was $row['dl_program'] enthält, könnte es noch nötig sein, dass du Anführungszeichen um den Wert setzt:
      $query = "UPDATE ... WHERE dl_program = '".$row['dl_program']."'";

    Grüße aus Nürnberg
    Tobias

    1. Hi danke,
      funst jetzt alles ohne Probs. dl_program war vom type Text (in der DB) also musste ich

      ...'".$row['dl_program']."'";

      nehmen!