Avatar billede Driton Seniormester
30. november 2013 - 04:18 Der er 7 kommentarer og
1 løsning

SQL fejl i query

Når jeg prøver at opdatere en felt/felter får jeg denne fejl meddelelse

Database query failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'by=Br�nsh�j, navn=Knud, postnummer=2700, tlf=12345678 WHERE id =12' at line 1

Min index side ser sådan her ud

<body>

<?php
require_once('db.php');
require_once('Underviser.php');



$underviser = Underviser::find_all();

?>
<form method="post" action="<?php $_PHP_SELF ?>">
<table width="400" border="0" cellspacing="1" cellpadding="2">
<?php
foreach($underviser as $us)
{
echo "
<tr>
<td width='100'>Undervisere ID</td>
<td><input name='id' type='text' value=". $us->id ." id='id' readonly></td>
</tr>
<tr> <td width='100'>Navn</td>
<td><input name='navn' type='text' value=". $us->navn . " id='navn'></td>
</tr>
<tr>
<td width='100'>Adresse</td>
<td><input name='adresse' type='text' value=". $us->adresse. " id='adresse'></td>
</tr>
<tr>
<td width='100'>By</td>
<td><input name='by' type='text' value=". $us->by. " id='by'></td>
</tr>
<tr>
<td width='100'>Telefon</td>
<td><input name='tlf' type='text' value=". $us->tlf. " id='tlf'></td>
</tr>
<tr>
<td width='100'>Postnummer</td>
<td><input name='postnummer' type='text' value=". $us->postnummer . " id='postnummer'></td>
</tr>
<tr>
<td width='100'> </td>
<td>
<input name='update' type='submit' id='update' value='Update'>
</td>
</tr>";
}
if(isset($_POST['update']))
{
    $id = $_POST['id'];
    $navn = $_POST['navn'];
    $adresse = $_POST['adresse'];
    $by = $_POST['by'];
    $tlf = $_POST['tlf'];
    $postnummer = $_POST['postnummer'];
   
$database->query("UPDATE undervisere SET adresse=$adresse, by=$by, navn=$navn, postnummer=$postnummer, tlf=$tlf WHERE id =$id");
   
}


?>

db.php

public function query($sql) {
        $this->last_query = $sql;
        $result = mysql_query($sql, $this->connection);
        $this->confirm_query($result);
        return $result;
    }

nogle der ved hvor problemet ligger?
Avatar billede arne_v Ekspert
30. november 2013 - 04:42 #1
Der mangler vist nogle '' omkring streng vaerdier.
Avatar billede arne_v Ekspert
30. november 2013 - 04:42 #2
Men derudover er din kode piv aaben overfor SQL injection.
Avatar billede Driton Seniormester
30. november 2013 - 04:50 #3
Når det fordi jeg så i en artikel hvor han gjorde det sådan der.
Ja det er jeg klar over. Men det er ikke så vigtigt lige her og især fordi det er bare noget jeg laver lokalt :)
Du Arne kan du også svarer på, hvis jeg f.eks trykker submit på den første hvorfor den så stadige opdatere også den sidste objekt jeg viser
Avatar billede arne_v Ekspert
30. november 2013 - 04:58 #4
Der skal ogsaa `` omkring by fordi det er et reserveret ord - eller bedre omdoeb det felt.
Avatar billede arne_v Ekspert
30. november 2013 - 05:00 #5
Jeg er noget skeptisk overfor konceptet med en form med mange submit og felter med samme navn.
Avatar billede Driton Seniormester
30. november 2013 - 19:35 #6
Har du en anden ide til hvordan man viser flere felter? men man griber kun fat i en? desuden smid lige et svar, så jeg kan tildele dig pointen
Avatar billede arne_v Ekspert
01. december 2013 - 04:23 #7
Der er flere muligheder:
* en form med forskellige navne/id paa input's
* flere forms
* AJAX requests
Avatar billede arne_v Ekspert
01. december 2013 - 04:23 #8
svar
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester