Skript fügt Datensatz mit lauter 0 in Datenbank ein
Sonja
- php
Hallo,
folgendes:
*tieflufthol*
Ich habe ein Formular mit Daten, die an eine PHP-Datei geschickt werden, das in einem gesonderten Fenster aufpoppt.
Als erstes wird anhand eines Namens überprüft, ob der Datensatz mit demselben Namen bereits vorhanden ist. Falls ja, wird ausgegeben, dass der User erstmal den Namen ändern muss, ehe er den Datensatz so speichern kann. Ein window.close() ermöglicht es, dieses Fenster zu schließen.
Ändert der User nun den Namen und ruft das Skript erneut mit demselben Button auf, geschieht erstmal was merkwürdiges: Es wird ein kompletter Datensatz in die Datenbank geschrieben, der in allen Feldern eine 0 enthält. Erst dann wird - nach erneuter Namensprüfung - auch der neue Datensatz mit neuem Namen in die Datenbank eingefügt. Der User kann mit window.close() das bestehende Fenster schließen.
So ist das Script prinzipiell aufgebaut:
<?php
*Datenbankverbindung wird aufgebaut*
$profil_bereits_vorhanden = mysql_query("SELECT ProfilNr FROM Vorgaben WHERE ProfilNr='$ProfilName'");
if (mysql_num_rows($profil_bereits_vorhanden) == 1)
{
echo "Profil bereits in Datenbank vorhanden. Bitte Profil-Namen ändern!<p>";
echo "<center><button type=BUTTON name="closewindow" onClick="window.close()">Fenster schließen</button></center>";
die();
}
else
{
$neues_profil_speichern = mysql_query("INSERT INTO Vorgaben (*alle Spaltenüberschriften*) VALUES (*alle Werte, die übergeben wurden)");
if (mysql_affected_rows() != 1)
{
echo "<br>Profil $ProfilName konnte nicht gespeichert werden!<br>";
echo "<center><button type=BUTTON name="closewindow" onClick="window.close()">Fenster schließen</button></center>";
die();
}
else
{
echo "<br>Profil erfolgreich mit dem Namen <b>$ProfilName</b> gespeichert!<br>";
}
}
mysql_close();
?>
Irgendeine Idee, warum dieser Datensatz mit lauter 0 eingefügt wird und wenn ja, wie ich das abstellen kann????
Vielen Dank im voraus schon mal!!!
Gruß,
Sonja ;)
Hi,
$neues_profil_speichern = mysql_query("INSERT INTO Vorgaben (*alle Spaltenüberschriften*) VALUES (*alle Werte, die übergeben wurden)");
Es ist natürlich sehr geschickt, den fehlerhaften Teil eines Scripts unlesbar zu machen, wenn andere den Fehler finden sollen.
Tip: Schreib das SQL-Statement in eine Variable und laß Dir die erstmal ausgeben.
Außerdem liefert mysql evtl eine Fehlermeldung, die man auch auswerten könnte...
cu,
Andreas
Hi,
$neues_profil_speichern = mysql_query("INSERT INTO Vorgaben (*alle Spaltenüberschriften*) VALUES (*alle Werte, die übergeben wurden)");
Es ist natürlich sehr geschickt, den fehlerhaften Teil eines Scripts unlesbar zu machen, wenn andere den Fehler finden sollen.
Danke für die Hilfe, aber Deine "Annahme", dass das der "fehlerhafte" Teil ist, ist falsch, da ich den SQL-Befehl vorher natürlich abgeklärt habe. Und der tut genau das, was er soll.
Hallo,
dann solltest Du in dem Script, in dem das SQL-Statement ausgefürht werden soll mal ein
echo "<pre>\n";
print_r($_POST);
echo "</pre>\n";
einbauen.
Wahrscheinlich sind Deine Variablen leer. Allerdings kann ich mir nicht vorstellen, wo dann anstelle von Leerstrings Nullen herkommen sollten.
Liebe Grüße aus http://www.braunschweig.de
Tom
Hi,
$neues_profil_speichern = mysql_query("INSERT INTO Vorgaben (*alle Spaltenüberschriften*) VALUES (*alle Werte, die übergeben wurden)");
Es ist natürlich sehr geschickt, den fehlerhaften Teil eines Scripts unlesbar zu machen, wenn andere den Fehler finden sollen.
Danke für die Hilfe, aber Deine "Annahme", dass das der "fehlerhafte" Teil ist, ist falsch, da ich den SQL-Befehl vorher natürlich abgeklärt habe. Und der tut genau das, was er soll.
Aha. Du schreibst als Fehlermeldung, daß lauter Nullen in die Datenbank geschrieben werden.
Die einzige Stelle im von Dir angegebenen Code, an der in die Datenbank geschrieben wird, ist das von Dir verstümmelte SQL-Statement.
Entweder ist also dieses SQL-Statement schuld, oder Du hast die relevante Stelle nicht verstümmelt, aber dafür gar nicht angegeben.
Womit Dir genausowenig geholfen werden kann.
cu,
Andreas