PHP/SQL - ON DUPLICATE KEY UPDATE

Her kan du få hjælp og stille spørgsmål til MySQL/MySQLi!
Besvar
Freddy
Begynder
Indlæg: 15
Tilmeldt: 25. apr 2014, 01:58

PHP/SQL - ON DUPLICATE KEY UPDATE

Indlæg af Freddy » 25. apr 2014, 02:23

Jeg er som I jo nok kan se, helt nybegynder, men har med stor interesse afprøvet jeres videoer og prøvet nedenstående.
Jeg har lavet en formular, er forbundet til server og database. Når jeg så prøver enkeltvis med INSERT og UPDATE går det fint (de står som kommentarlinjer) og jeg synes jeg var dygtig. Jeg fandt så en udvidelse med ON DUPLICATE KEY UPDATE, men det kan jeg ikke få til at virke, jeg får hver gang at vide, at der er fejl - ingen data, så jeg var nok lidt for dygtig :-).
Men det undrer mig at jeg ikke får syntax fejl i NetBeans og på de 3 Echo linjer over Insert Stmt. kan jeg konstatere, at jeg har data med i felterne fra formularen - så har I et bud på hvad jeg har gjort galt?

Kode: Vælg alt

if (isset($_POST['submit'])) {

        $F_Nummer = $_POST['Nummer'];
        $F_Fornavn = $_POST['Fornavn'];
        $F_Efternavn = $_POST['Efternavn'];
        $F_Stilling = $_POST['Stilling'];
        
// Feltet Nummer er uniqe key

      echo "Felt1  " . "'$F_Nummer'" . "<br/>";
      echo "Felt2og3 " . "'$F_Fornavn' . '$F_Efternavn'". "<br/>";
      echo "Felt4" ."'$F_Stilling'". "<br/>"."<br/>";
// $tabeldata = "INSERT INTO tabel1(Nummer, Fornavn, Efternavn, Stilling) VALUES ('$F_Nummer','$F_Fornavn','$F_Efternavn','$F_Stilling')";
//  $tabeldata = "UPDATE tabel1 SET Fornavn='$F_Fornavn', Efternavn='$F_Efternavn', Stilling='$F_Stilling' WHERE '$F_Nummer'=Nummer";          
 
      $tabeldata = "INSERT INTO tabel1(Nummer, Fornavn, Efternavn, Stilling) VALUES ('$F_Nummer','$F_Fornavn','$F_Efternavn','$F_Stilling')
  ON DUPLICATE KEY UPDATE Fornavn='$F_Fornavn', Efternavn='$F_Efternavn', Stilling='$F_Stilling' WHERE '$F_Nummer'=Nummer";          
 
                $resultat = mysql_query($tabeldata);
   if($resultat) {
    echo "Din bruger blev registeret";
   }
 else {
     echo "FEJL- ingen data". "<br/>";
 }
 }

cristian
Moderator
Moderator
Indlæg: 882
Tilmeldt: 26. sep 2011, 21:31
Kontakt:

Re: PHP/SQL - ON DUPLICATE KEY UPDATE

Indlæg af cristian » 25. apr 2014, 18:35

Det sikkert din where der laver rod.

I Nummer har du skrevet
'=Nummer";
Burde vel være
'="Nummer"
Ellers har du ikke et start tegn af "

Kode: Vælg alt

$tabeldata = "INSERT INTO tabel1(Nummer, Fornavn, Efternavn, Stilling) VALUES ('$F_Nummer','$F_Fornavn','$F_Efternavn','$F_Stilling')
ON DUPLICATE KEY UPDATE Fornavn='$F_Fornavn', Efternavn='$F_Efternavn', Stilling='$F_Stilling' WHERE '$F_Nummer'=Nummer";  
Du kan vel også i stedet for

Kode: Vælg alt

WHERE '$F_Nummer'=Nummer";  
Sige

Kode: Vælg alt

WHERE '$F_Nummer'=LAST_INSERT_ID(Nummer);
Hvor Nummer burde være en auto increment function, der vel så auto incrementer det sidst kendte ID som du poster tilbage til databasen.
Prøv at læse om hvordan du bruger prepared statements i PHP og triggers i din db.

Og så skal du lave de rigtige tabs i din kode, det gør det meget nemmere at følge :)

http://stackoverflow.com/questions/2469 ... with-where
https://dev.mysql.com/doc/refman/5.0/en ... icate.html

Freddy
Begynder
Indlæg: 15
Tilmeldt: 25. apr 2014, 01:58

Re: PHP/SQL - ON DUPLICATE KEY UPDATE

Indlæg af Freddy » 26. apr 2014, 11:44

Hej Christian

Tak for svar - det var ganske rigtigt min WHERE det var galt med.
Så skriver du:
Og så skal du lave de rigtige tabs i din kode, det gør det meget nemmere at følge
Det har du sikkert ret i, men som helt grøn nybegynder der ikke er helt inde i terminologien,
kunne du så ikke lige uddybe "rigtige tabs i din kode" en lille smule :D

Brugeravatar
scootergrisen
Moderator
Moderator
Indlæg: 709
Tilmeldt: 21. jun 2012, 23:40
Kontakt:

Re: PHP/SQL - ON DUPLICATE KEY UPDATE

Indlæg af scootergrisen » 26. apr 2014, 19:52

Husk at mysql_query() er deprecated fra PHP 5.5.0.
http://dk1.php.net/manual/en/function.mysql-query.php

Besvar