// You should call this first session_start(); // Initialize the session value $_SESSION['ELEV_ID'] = $_POST["ELEV_ID"]; $_SESSION['F_NAME'] = $_POST["F_NAME"]; $_SESSION['L_NAME'] = $_POST["L_NAME"]; $a=$_POST["F_NAME"]; $b=$_POST["L_NAME"];
$sql = 'UPDATE elevnavn SET F_NAME=$a, L_NAME=$b WHERE ELEV_ID=1';
Din $sql-streng bliver ikke interpoleret når den starter og slutter med enkelte anførselstegn - her skal du bruge dobbelte anførselstegn, så du sender $a direkte til databasen. Prøv at omskrive til:
$sql = "UPDATE elevnavn SET F_NAME='$a', L_NAME='$b' WHERE ELEV_ID=1";
Skal koden i produktion, mangler der noget sikring mod SQL-injection..
Nu skriver den i databasen, fedt. Du kunne vel ikke hjælpe med et script så alle data bliver overskrevet og ikke kun sidste line.
Mit script som det ser ud nu (med en del forsøgs ting, der selvfølgelig skal væk) <?php include('../includes/connection.php');
// You should call this first session_start(); // Initialize the session value $_SESSION['ELEV_ID'] = $_POST["ELEV_ID"]; $_SESSION['F_NAME'] = $_POST["F_NAME"]; $_SESSION['L_NAME'] = $_POST["L_NAME"]; $a=$_SESSION['F_NAME']; $b=$_SESSION['L_NAME']; $id=$_SESSION['ELEV_ID']; echo $a; echo $b; echo $id;
$sql = "UPDATE elevnavn SET F_NAME='$a', L_NAME='$b' WHERE ELEV_ID='$id'";
Jeg er helt på dybt vand her. Tanken er at det er en lærer der indskriver nogle prøveresultater, som så sendes til databasen og her retter de data der er nye. Giver det mening?
- og ikke kun sidste line. Når jeg kører det script jeg har her, er det som om den kører alle rækker i gennem og kun retter den sidste linie i min tabel, det er som om, den ikke gør følgende: Elev 1 - ret det der er forandret Elev 2 - ret det der er forandret osv.
Har prøvet dette ud fra beskrivelsen, men den fejler:
Fatal error: Uncaught Error: Call to a member function prepare() on null in /var/www/gmonskole.dk/public_html/tk/pages/update_prover1.php:5 Stack trace: #0 {main} thrown in /var/www/gmonskole.dk/public_html/tk/pages/update_prover1.php on line 5 <?php include('../includes/connection.php');
/* Opret et prepared statement */ if ($stmt = $mysqli->prepare('UPDATE `elevnavn` SET `F_NAVN`=$f_navn WHERE `id`=$id')) { /* Bind parametre */ $stmt->bind_param('si', $f_navn, $id); /* St vrdier p parametrene */ $f_navn = $_POST['F_NAME']; $id = $_POST['ELEV_ID']; /* Eksekver foresprgslen */ $stmt->execute(); /* Luk statement */ $stmt->close(); } else { /* Der er opstet en fejl */ echo 'Der opstod en fejl i erklringen: ' . $mysqli->error; }
hedder din connection ikke $db ?? echo 'Der opstod en fejl i erklringen: ' . $mysqli->error; skal vel være echo 'Der opstod en fejl i erklringen: ' . $db->error;
har du ændret dine felt navne iforhold til tidligere vist i #3
Jeg lukker denne tråd, og oprette et spørgsmål om løkken i et andet spørgsmål.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.