Moin!
$query = "select * from table where ID=$ID";
Warum zum Kuckuk gaht das Ding manchmal so durch und ein anderes Mal nur so:
$query = "select * from table where ID="$ID"";
Es ist kein Fehler, auch numerische Feldinhalte IMMER in Anführungszeichen zu setzen. Außerdem sollten sämtliche Daten, die in Variablen stecken und an die DB geschickt werden, immer escapet werden. Im Falle von MySQL wäre dafür die Funktion mysql_escape_string() zu benutzen.
und wieder ein anderes Mal gar nicht?
Werde konkret: Liefere sowohl die exakte Fehlermeldung bzw. Fehlerbeschreibung, als auch den beteiligten Code und (ganz wichtig!) die erzeugte, fertige SQL-Anweisung, die an die DB geschickt wird (da sollte ein "echo $query" ausreichen).
Ach ja: Die Fehlermeldung der DB gehört natürlich auch dazu. mysql_error() hilft.
Gibt es eine Möglichkeit, die immer funktioniert? Und warum macht php da anscheined irgendwelche Unterschiede, die mir leider nichht zugänglich sind?
Ich bin fest der Meinung, deine jeweils benutzten Daten sind in jedem einzelnen Fall unterschiedlich. Die korrekte Methode ist, immer (auch bei Zahlenfeldern) einfache Anführungszeichen zu verwenden und die Variablen immer zu escapen.
- Sven Rautenberg