25. juli 2005 - 18:38
Der er
9 kommentarer og 1 løsning
Update og insert
Hey! Nogen der kan se en fejl heri? Det er sendt fra en form, og post'ne kommer frem men den ændre ikke i min db. <?php switch($_POST['script']){ case "opret"; include "../funktion/db.php"; mysql_query("INSERT INTO depot_kurser (dato, indre_direct, salgs_direct, indre_high, salgs_high, indre_fjern, salgs_fjern, indre_it, salgs_it) VALUES ('{$_POST['dato']}', '{$_POST['indre_direct']}', '{$_POST['salgs_direct']}', '{$_POST['indre_high']}', '{$_POST['salgs_high']}', '{$_POST['indre_fjern']}', '{$_POST['salgs_fjern']}', '{$_POST['indre_it']}', '{$_POST['salgs_it']}')"); include "../funktion/luk_db.php"; die ("<META HTTP-EQUIV=Refresh CONTENT='5; URL=depot.php'>Opret"); break; case "opdater"; include "../funktion/db.php"; mysql_query("UPDATE depot_kurser SET indre_direct='{$_POST['indre_direct']}', salgs_direct='{$_POST['salgs_direct']}', indre_high='{$_POST['indre_high']}', salgs_high='{$_POST['salgs_high']}', indre_fjern='{$_POST['indre_fjern']}', salgs_fjern='{$_POST['salgs_fjern']}', indre_it='{$_POST['indre_it']}', salgs_it='{$_POST['salgs_it']} WHERE dato='{$_POST['dato']}'"); include "../funktion/luk_db.php"; die ("<META HTTP-EQUIV=Refresh CONTENT='5; URL=depot.php'>Opdater"); break; default; } die ("<META HTTP-EQUIV=Refresh CONTENT='0; URL=depot.php'>"); ?>
Annonceindlæg fra QNAP
Kolon, ikke semikolon, efter dine case'es: <?php switch ($_POST['script']) { case "opret" : include "../funktion/db.php"; mysql_query("INSERT INTO depot_kurser (dato, indre_direct, salgs_direct, indre_high, salgs_high, indre_fjern, salgs_fjern, indre_it, salgs_it) VALUES ('{$_POST['dato']}', '{$_POST['indre_direct']}', '{$_POST['salgs_direct']}', '{$_POST['indre_high']}', '{$_POST['salgs_high']}', '{$_POST['indre_fjern']}', '{$_POST['salgs_fjern']}', '{$_POST['indre_it']}', '{$_POST['salgs_it']}')"); include "../funktion/luk_db.php"; break; case "opdater": include "../funktion/db.php"; mysql_query("UPDATE depot_kurser SET indre_direct='{$_POST['indre_direct']}', salgs_direct='{$_POST['salgs_direct']}', indre_high='{$_POST['indre_high']}', salgs_high='{$_POST['salgs_high']}', indre_fjern='{$_POST['indre_fjern']}', salgs_fjern='{$_POST['salgs_fjern']}', indre_it='{$_POST['indre_it']}', salgs_it='{$_POST['salgs_it']} WHERE dato='{$_POST['dato']}'"); include "../funktion/luk_db.php"; break; default: } die ("<META HTTP-EQUIV=Refresh CONTENT='0; URL=depot.php'>"); ?>
Øhh.. nej det er ikke korrekt.. Plejer jeg i hvert fald ikke at gøre, og det virker normalt. Men prøvede lige at rette på det, og det hjælp ikke.
I 9 ud af 10 tilfælde skyldes database-fejl at SQL-kommandoerne indeholder noget andet end hvad man forventede. Det er derfor altid en god ide - som debug - at prøve at udskrive SQL'erne før at man prøver at udføre dem: <?php echo "DEBUG (POST) : " . $_POST['script'] . "<br>"; switch ($_POST['script']) { case "opret" : include "../funktion/db.php"; $SQL = "INSERT INTO depot_kurser (dato, indre_direct, salgs_direct, indre_high, salgs_high, indre_fjern, salgs_fjern, indre_it, salgs_it) VALUES ('{$_POST['dato']}', '{$_POST['indre_direct']}', '{$_POST['salgs_direct']}', '{$_POST['indre_high']}', '{$_POST['salgs_high']}', '{$_POST['indre_fjern']}', '{$_POST['salgs_fjern']}', '{$_POST['indre_it']}', '{$_POST['salgs_it']}')"; echo "DEBUG (INSERT) : " . $SQL . "<br>"; mysql_query($SQL); include "../funktion/luk_db.php"; break; case "opdater": include "../funktion/db.php"; $SQL = "UPDATE depot_kurser SET indre_direct='{$_POST['indre_direct']}', salgs_direct='{$_POST['salgs_direct']}', indre_high='{$_POST['indre_high']}', salgs_high='{$_POST['salgs_high']}', indre_fjern='{$_POST['indre_fjern']}', salgs_fjern='{$_POST['salgs_fjern']}', indre_it='{$_POST['indre_it']}', salgs_it='{$_POST['salgs_it']} WHERE dato='{$_POST['dato']}'": echo "DEBUG (UPDATE) : " . $SQL . "<br>"; mysql_query(); include "../funktion/luk_db.php"; break; default: } // die ("<META HTTP-EQUIV=Refresh CONTENT='0; URL=depot.php'>"); ?>
yes! Den måde at debug på har jeg aldrig set før! Kanon! Og til switch'en kan jeg jo kun give dig ret, har bare lært det anderledes i tidernes morgen.
Det lyder som om at du fandt fejlen... Hvad var der galt? (jeg har en mistanke om $_POST['script'] - men er langt fra sikker).
hmm, jeg fandt fejlen i update. Havde simpelthen glemt et ' inden WHERE. I insert fandt jeg aldrig fejlen, men det virker nu i hvert fald. Men helt sikkert mange tak!
Er der stadig en fejl i INSERT? Så prøv lige at pose et eksempel her så jeg kan kigge på det.
nej nej misforstået, skrev: I insert fandt jeg aldrig fejlen, men det virker nu i hvert fald. :) :) Så bare smid et svar!
25. juli 2005 - 21:33
#10
Svar :^)
Computerworld tilbyder specialiserede kurser i database-management