herdon Skrevet 22. mars 2015 Del Skrevet 22. mars 2015 Har laget et script i php for å kunne oppdatere flere felt i en database. Siden opplastning av bilde og alt dette funker bra, så må det nesten være noe med sql eller evt. annet rundt dette. Får ingen feilmeldinger, men den vil ikke oppdatere. Her er koden: $con=mysqli_connect("XXX.com","XXX","XXX","XXX"); $sql = "UPDATE oppskrifter SET navn='" . $_POST['navn'] . "', intro='" . $_POST['intro'] . "', kategori='" . $_POST['kategori'] . "', "; if (!(empty($_FILES['filbane']['name']))) { $temp_fil = $_FILES['filbane']['tmp_name']; if (!($filref = fopen("bildeteller.txt", "r"))) { die ("En feil oppstod med å åpne bildetelleren"); } $bildeid = (int) fgets($filref); fclose($filref); $bildeid++; $filnavn = "bilder/" . $bildeid . $_FILES['filbane']['name']; if (strlen($filnavn) > 50) { $filendelse = explode(".",$_FILES['filbane']['name']); $filnavn = "bilder/" . $bildeid . "." . $filendelse[1]; } $filref = fopen("bildeteller.txt","w"); fwrite($filref,$bildeid); move_uploaded_file($temp_fil, $filnavn); echo "Bilde:<br><img src='" . $filnavn . "'>"; $sql = $sql . "bilde='" . $filnavn . "' "; } $sql = $sql . "porsjoner='" . $_POST['porsjoner'] . "', ingredienser='" . $_POST['ingredienser'] . "', fremgangsmaate='" . $_POST['fremgangsmaate'] . "', oaBruker='" . $_SESSION['bruker'] . "' WHERE id='" . $_POST['id'] . "'"; $result = mysqli_query($con,$sql); Problemet kommer når bildet skal oppdateres, da vil ikke innholdet i "cellen" endres. Resten av "cellene" oppdateres, og bildet blir lastet opp, men selve databasens bilde-celle vil ikke oppdateres. Linjen som "ikke virker" er linje 41. Lenke til kommentar
Crowly Skrevet 22. mars 2015 Del Skrevet 22. mars 2015 (endret) FY FY FY! $sql = "UPDATE oppskrifter SET navn='" . $_POST['navn'] . "', intro='" . $_POST['intro'] . "', kategori='" . $_POST['kategori'] . "', "; Dette er helt åpent for sql injections. ALDRI bruk bruker input direkte i en sql. Les det opp på sql injection, validering og sanitering av input, og sql prepared statements. Du mangler ett komma på linje 41 $sql = $sql . "bilde='" . $filnavn . "' "; // endres til $sql = $sql . "bilde='" . $filnavn . "', "; Ett tips er å skrive ut sql'en i sin helhet og kontrollere den for feil, evt. kjøre den i phpmyadmin eller andre mysql applikasjoner for å se at den faktisk fungerer. Endret 22. mars 2015 av Crowly Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå