Avatar billede silmarillion Juniormester
10. januar 2009 - 23:11 Der er 4 kommentarer og
1 løsning

syntax fejl ved update af database

Hej eksperter,

Jeg får denne fejl når jeg forsøger at opdatere min mysql database:

fejl: ret_indlaeg prøvede UPDATE koncerter SET dato = '05/05-2009', klokken = '22.35'spillested = 'Rust - København'tekst = 'Live i aften til årets rock event 'WHERE id = 13 men fejlede: 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 'spillested = 'Rust - København'tekst = 'Live i aften til årets rock event 'WHE' at line 1

Jeg bruger følgende til at opdatere databasen:

function ret_indlaeg($id, $dato, $klokken, $spillested, $tekst){
$sql = "UPDATE koncerter " .
        "SET dato = '$dato', " .
        "klokken = '$klokken'" .
        "spillested = '$spillested'" .
        "tekst = '$tekst'" .
        "WHERE id = $id";
$resultat = mysql_query($sql);
if(!$resultat)
  rapporter_fejl("ret_indlaeg prøvede $sql " .
                "men fejlede: " . mysql_error());
}

samt:


<?
require_once("login.php");
require_once("adminfunktioner.php");
require_once("adminlayout.php");

if(logget_ind()){
if(isset($_GET[id])) {
  $sql = "SELECT dato, klokken, spillested, tekst " .
        "FROM koncerter " .
        "WHERE id = $_GET[id]";
  $resultat = mysql_query($sql);
  if(!$resultat)
  rapporter_fejl("adminrediger.php forsøgte $sql " .
                  "men fejlede: " . mysql_error());
  else {
  $post = mysql_fetch_array($resultat);
  ?>
  <html>
  <body>
  <form method='post'
        action=' adminrediger.php '>
  <input type='hidden' name='id'
          value='<? echo $_GET[id]; ?>'>
  Dato:
  <input type='text' name='dato'
          value='<? echo $post[dato]; ?>'><br>
  klokken:
  <input type='text' name='klokken'
          value='<? echo $post[klokken]; ?>'><br>
  Spillested:
  <input type='text' name='spillested'
          value='<? echo $post[spillested]; ?>'><br>
  <textarea name='tekst' cols="80" rows="10"><? echo $post[tekst]; ?>
  </textarea>
  <br>
  <input type='submit' value='Rediger'>
  </body>
  </html>
  <?
  }
}

if(isset($_POST[id]) &&
    isset($_POST[dato]) &&
    isset($_POST[klokken]) &&
    isset($_POST[spillested]) &&
    isset($_POST[tekst])){
  ret_indlaeg($_POST[id],
                  $_POST[dato],
                  $_POST[klokken],
                  $_POST[spillested],
                  $_POST[tekst]);
  vis_status("Indl&aelig;g redigeret");
}
} else
vis_status("Du er ikke logget ind.");
?>

og:

<?
require_once("forbindelse.php");
require_once("debug.php");

function vis_forside(){
?>
<html>
<body>
<h1>Blog administration</h1>
<a href='admin.php?logud=1'>log ud</a>

<h2>Tilf&oslash;j indl&aelig;g</h2>
<form method='post' action='admintilfoej.php'>
Dato:
<input type='text' name='dato'><br>
klokken:
<input type='text' name='klokken'><br>
Spillested:
<input type='text' name='spillested'><br>
<textarea name='tekst' cols="80" rows="10"></textarea>
<br>
<input type='submit' value='Tilf&oslash;j'>
</form>

<h2>Rediger indl&aelig;g</h2>
<?
$sql = "SELECT id, klokken " .
      "FROM koncerter " .
      "ORDER BY id DESC";
$resultat = mysql_query($sql);
if(!$resultat)
rapporter_fejl("vis_forside forsøgte $sql " .
                "men fejlede: " . mysql_error());
else
while($post = mysql_fetch_array($resultat)){
  echo "<b>$post[klokken]</b> - ";
  echo "<a href='adminrediger.php?id=$post[id]'>";
  echo "rediger</a> ";
  echo "<a href='adminslet.php?id=$post[id]'>slet</a>";
  echo "<br>\n";
}
?>
</body>
</html>
<?
}

function vis_status($tekst){
?>
<html>
<body>
<? echo $tekst; ?><br>
Hop til <a href='admin.php'>forsiden</a>
</body>
</html>
<?
}
?>

Jeg bruger et lignende script, bare med færre vars, hvor det virker fint med at opdatere databasen.
Avatar billede erikjacobsen Ekspert
10. januar 2009 - 23:15 #1
Et komma før "spillested" vil nok gøre en forskel.
Avatar billede silmarillion Juniormester
10. januar 2009 - 23:36 #2
Jeg kan ikke se, hvor der mangler et kommma, kan du præcisere det?
Avatar billede erikjacobsen Ekspert
11. januar 2009 - 10:41 #3
Ja. I SQL-sætningen, som du udskriver, skal der være et komma lige før "spillested".
Avatar billede silmarillion Juniormester
11. januar 2009 - 11:20 #4
Super, nu virker det, det havde jeg aldrig fundet selv.
Avatar billede silmarillion Juniormester
26. februar 2009 - 00:46 #5
lukkes
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
Computerworld tilbyder specialiserede kurser i database-management

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