Tom: Wenn ID in Datenbank vorhanden ist, neue generieren

Beitrag lesen

Hello,

ich habe folgenden Code:

Ja, das ist schlimm!

function test(){

$zahl=1;
  while(mysql_num_rows(mysql_query("SELECT ID FROM tabelle WHERE ID='".$zahl++."' LIMIT 1"))==1){
    return true;
  }
  return $zahl;
}


>   
> Nach meinen begrenzten PHP-Kenntnissen müsste die Zahl solange erhöht werden, bis sie nicht mehr in der Datenbank gefunden wird. Wird sie allerdings nicht.  
> Sieht jemand einen Fehler?  
  
mehrere!  
  
Aber nur zu Deiner Kernfrage meine Antwort:  
  
mysql\_query() ist eine Funktion.  
Du übergibst dieser Funktion einen Wert (den String) als "Call by Value"-Argument. Dieser Wert wird als Kopie übergeben, kann daher innerhalb der Funktion beliebig verändert werden. Die Veränderungen an diesem Wert \_müssen\_ aber außerhalb der Funktion ohne Wirkung bleiben!  
  
Abhilfe:  
  
Wähle die expliite und ausführliche Schreibweise.  
Verzichte auf das Schachteln von Funktionen!  
  
Das mag vielleicht Deinem Ego schaden, da Du von den Lesern Deines Codes für simpel gehalten wirst (passiert mir hier regelmäßig), nützt aber der Kontrollierbarkeit und damit der Funktionstüchtigkeit deines Codes!  
  
  
  
  
  
  
  
Liebe Grüße aus dem schönen Oberharz  
  
  
Tom vom Berg  
![](http://selfhtml.bitworks.de/Virencheck.gif)  
  

-- 
Nur selber lernen macht schlau  
<http://bergpost.annerschbarrich.de>