Warum bitte macht diese Anweisung nichts??
Niko
- datenbank
Aloa,
Ich habe folgenden Quellcode:
<?
if(!isset($_POST['sort'])) die("FEHLER!");
$sort = explode(",",$_POST['sort']);
foreach($sort as $value)
{
$value = explode(":", $value);
$index = $value[0];
$id = $value[1];
echo $id." => ".$index."\n";
$result = mysql_query("UPDATE menuentries SET sort = $index WHERE id = $id");
if(!$result) die("[FEHLER]:".mysql_error());
}
?>
Handelt sich natürlich um ne PHP5-Datei! Also in $_POST['sort'] steckt sowas wie 0:1,1:8,2:5 oder so! Wenn ich dieses Script nun durchlaufen lasse wird zwar brav
1 => 0
8 => 1
5 => 2
ausgegeben, doch die Spalte sort wird bei den Datensätzen nicht geändert! Eine Datenbankverbindung besteht und sowohl die Tabelle "menuentries" als auch die Spalten "sort" und "id" existieren! Es wird keine Fehlermeldung ausgegeben! Ich kann mir echt nicht erklären warum nichts geändert wird.
Hoffe ihr könnt mir helfen!
Lg Niko
Hello,
$result = mysql_query("UPDATE menuentries SET sort = $index WHERE id = $id");
Vorschlag: Umschreiben
$sql = "UPDATE menuentries SET sort = $index WHERE id = $id";
$result = mysql_query($sql);
Ermöglicht es dir zwischenzeitig einen Debug-Modus einzuführen und per echo $sql mal den tatsächlichen Inhalt auszuegeben. Schau mal nach, was dabei herauskommt und lasse das Statement manuell gegen die Datenbank laufen. Vielleicht entdeckst du etwas...
MfG
Rouven
Hi Rouven,
Danke erstmal für die Antwort! Ich habe den Fehler inzwischen gefunden und er lag in einer Javascript-Datei, die die Daten (id/sort) falsch angereicht hat! Die MYSQL Anweisung hat nichts weiter gemacht, also die Spalten auf den Wert zu setzen auf dem sie eh schon waren.^^
Lg Niko
Hi,
[...] doch die Spalte sort wird bei den Datensätzen nicht geändert! Eine Datenbankverbindung besteht und sowohl die Tabelle "menuentries" als auch die Spalten "sort" und "id" existieren! Es wird keine Fehlermeldung ausgegeben! Ich kann mir echt nicht erklären warum nichts geändert wird.
Erster Schritt sollte in solchen Faellen immer sein, dass du dir die dynamisch generierte Query zur Kontrolle ausgeben laesst, und sie dann per Copy&Paste im phpMyAdmin oder sonstigem DB-Frontend testest.
mysql_affected_rows waere dann nach einem Daten aendernden Statement auch noch interessant.
MfG ChrisB
Mahlzeit Niko,
Handelt sich natürlich um ne PHP5-Datei!
Natürlich ...
Also in $_POST['sort'] steckt sowas wie 0:1,1:8,2:5 oder so!
Gerade im Hinblick auf den von Dir gefunden Fehler: Sicher? Immer? Also ich würde Eingaben, die vom Benutzer kommen (können), prinzipiell erstmal GAR NICHT trauen und alles validieren, was geht (Merke: ALL INPUT IS EVIL!).
MfG,
EKKi