Avatar billede michael_stim Ekspert
31. august 2004 - 14:23 Der er 17 kommentarer og
1 løsning

MySQL fejlmeddelse.

Hvorfor kommer denne fejl?
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 'overskrift' at line 1

Kode:

else if (isset($_POST['opdater'])) {
    $idnummer=$_POST['idnummer'];
    $tekst=$_POST['tekst'];
    $overskrift=$_POST['overskrift'];
    $overskrift2=$_POST['overskrift2'];
    require_once('open_connection.php');
    $result=("UPDATE home set overskrift='$overskrift', overskrift2='$overskrift2', tekst='$tekst' WHERE id=$idnummer");
    mysql_query($result, $links);
    //mysql_close($links);
}

-----------------------------------------------------------------

$query2=("SELECT * FROM home WHERE id=$sid") or die(mysql_error());
$result=mysql_query($query2,$links) or die(mysql_error());
while ($row=mysql_fetch_array($result)) {
$id=$row['id'];
$tekst=htmlentities($row['tekst']);
$overskrift=$row['overskrift'];
$overskrift2=$row['overskrift2'];
$id=$row['id'];
Avatar billede fennec Nybegynder
31. august 2004 - 14:28 #1
Det kan måske være fordi du har brugt ' tegnet i overskrift eller overskrift2.
Prøv at skrive SQL-sætningen ud. Det gør det ofte nemmere at finde fejlen.

echo "UPDATE home set overskrift='$overskrift', overskrift2='$overskrift2', tekst='$tekst' WHERE id=$idnummer";
Avatar billede michael_stim Ekspert
31. august 2004 - 14:31 #2
Den opdaterer ok, men fejlen/advarslen kommer alligevel??
Avatar billede fennec Nybegynder
31. august 2004 - 14:36 #3
hvad er $links ???
Avatar billede michael_stim Ekspert
31. august 2004 - 14:39 #4
connectionstringen til databasen.
Avatar billede fennec Nybegynder
31. august 2004 - 14:56 #5
Det kan ikke være problemet er et andet sted på siden...
Du siger jo den godt vil opdatere, også kan der ikke være en syntaxfejl i den linje.
Avatar billede dennismp Nybegynder
31. august 2004 - 15:00 #6
Da du ikke laver error-tjekt på din UPDATE-sætning, kan det jo ikke være den, der er problemet.

$query2 laves der error-check på,  men der bruger du ikke "overskrift " i din SQL kode.. Er du sikker på at du leder det rigtige sted?
Avatar billede michael_stim Ekspert
31. august 2004 - 15:10 #7
<?
if(isset($_POST['slet'])) {
    require_once('open_connection.php');
    $idnummer=$_POST['idnummer'];
    $result="DELETE FROM home WHERE id=$idnummer" or die(mysql_error());
    mysql_query($result);
    mysql_close($links);
}
else if (isset($_POST['opdater'])) {
    $idnummer=$_POST['idnummer'];
    $tekst=$_POST['tekst'];
    $overskrift=$_POST['overskrift'];
    $overskrift2=$_POST['overskrift2'];
    require_once('open_connection.php');
    $result=("UPDATE home set overskrift='$overskrift', overskrift2='$overskrift2', tekst='$tekst' WHERE id=$idnummer");
    mysql_query($result);
    //mysql_close($links);
}
?>
<html>
<head>
<title>Diner/Update</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<link rel="stylesheet" href="sevilla.css" type="text/css">
</head>

<body bgcolor="#FFFFFF" text="#666666" link="#666666" vlink="#666666" alink="#666666" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" background="../bilder/bgd_main.gif">
<table width="640" border="0" cellspacing="7" cellpadding="0">
  <tr>
    <td><font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#CC0000"><b><font size="3">Opdater/Slet drinkssiden</font></b></font></td>
  </tr>
</table>
<br>
<table>
<tr>
<td>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" name="selId">
    <table align="center" width="350" cellspacing="2" cellpadding="2" border="0">
        <?
        require_once('open_connection.php');
        $query="SELECT * FROM home WHERE side='drinks'" or die(mysql_error());
        $result=mysql_query($query,$links);
        $idn=$row['id'];
        $overskrift=$row['overskrift'];
          ?>
        <tr align="left">
          <td Valign="top"><font face="Verdana, Arial, Helvetica, sans-serif" size="1">Vælg overskrift:</font></td>
          <td align="left"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
            <select name="sid" onChange="this.form.submit();">
                <option selected>Vælg overskrift</option>
            <?
                while ($row=mysql_fetch_array($result)) {
                $idn=$row['id'];
                $overskrift=$row['overskrift'];
            ?>
                <option value='<? echo $idn; ?>'><? echo $overskrift; ?></option>
            <?
            }
            ?>
            </select>
            </font></td>
    </tr>
    </table>
    </td>
    </tr>
    <tr>
    <td>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" name="velkommen">
      <table border="0">
        <?
            if (isset($_POST['sid'])) {
            require_once('open_connection.php');
            $sid=$_POST['sid'];
            $query2=("SELECT * FROM home WHERE id=$sid") or die(mysql_error());
            $result=mysql_query($query2,$links) or die(mysql_error());
            while ($row=mysql_fetch_array($result)) {
            $id=$row['id'];
            $tekst=htmlentities($row['tekst']);
            $overskrift=$row['overskrift'];
            $overskrift2=$row['overskrift2'];
            $id=$row['id'];
            }
        ?>
        <input type="hidden" name="idnummer" <? if(isset($_POST['sid'])) { ?> value='<? echo($id); } ?>'>
        <tr>
          <td><font face="Verdana, Arial, Helvetica, sans-serif" size="1">Overskrift:</font></td>
          <td colspan="3"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
            <input type="text" name="overskrift" size="40" <? if(isset($_POST['sid'])) { ?> value='<? echo($overskrift); }?>'>
            </font></td>
        </tr>
        <tr>
          <td><font face="Verdana, Arial, Helvetica, sans-serif" size="1">Overskrift 2:</font></td>
          <td colspan="3"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
            <input type="text" name="overskrift2" size="40" <? if(isset($_POST['sid'])) { ?> value='<? echo($overskrift2);} ?>'>
            </font></td>
        </tr>
        <tr>
          <td Valign="top"><font face="Verdana, Arial, Helvetica, sans-serif" size="1">Tekst:</font></td>
          <td colspan="3"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
            <textarea name="tekst" rows="8" cols="30" <? if(isset($_POST['sid'])) { ?> value='<? echo($tekst);}?>'><? if(isset($_POST['sid'])) { echo($tekst); }?></textarea>
            </font></td>
        </tr>
        <?}?>
        <td><font face="Verdana, Arial, Helvetica, sans-serif" size="1">&nbsp;

            </font></td>
        <td><font face="Verdana, Arial, Helvetica, sans-serif" size="1">
        <input type="submit" name="opdater" value="Opdater" class="knappgrey">
        <input type="submit" name="slet" value="Slet" class="knappgrey">
        </font></td>
        </tr>
      </table>
  </form>
  </td>
  </tr>
  </table>
</body>
</html>
Avatar billede Slettet bruger
01. september 2004 - 03:10 #8
Prøv at rette disse to linier:

$result=("UPDATE home set overskrift='$overskrift', overskrift2='$overskrift2', tekst='$tekst' WHERE id=$idnummer");

til

$result="UPDATE home set overskrift='$overskrift', overskrift2='$overskrift2', tekst='$tekst' WHERE id=$idnummer";

og

$query2=("SELECT * FROM home WHERE id=$sid") or die(mysql_error());

til

$query2="SELECT * FROM home WHERE id=$sid";
Avatar billede michael_stim Ekspert
01. september 2004 - 09:37 #9
sandbox>>Det var sådan de så ud fra starten (dine forslag), og det har ikke noget at sige. Prövede bare at sätte paranteser rundt om fordi det er syntaxen den klager over.
Avatar billede dennismp Nybegynder
01. september 2004 - 09:41 #10
Kan du ikke tjekke helt præcist hvilken SQL der går galt?
Avatar billede michael_stim Ekspert
02. september 2004 - 09:58 #11
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /hsphere/local/home/mulberry/clubsevilla.dk/admin/update_drinks.php on line 77

Line 76: $result=mysql_query($query2);
Line 77: while ($row=mysql_fetch_array($result)) {
Line 78: $id=$row['id'];

Der er fejlen..
Avatar billede dennismp Nybegynder
02. september 2004 - 10:15 #12
prøv at rette linje76, så du får or die(mysql_error()) på
Avatar billede michael_stim Ekspert
02. september 2004 - 10:17 #13
Så kommer den der förste fejlmeddelse.

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 'overskrift' at line 1
Avatar billede dennismp Nybegynder
02. september 2004 - 10:19 #14
Prøv rette or die til..:
or die(mysql_error() . '<br>SQL:'.$query2);

og vis mig hvad sql'en er.
Avatar billede michael_stim Ekspert
02. september 2004 - 10:28 #15
OK der var fejlen. Den tager värdien af dropdown boxen, men det skulle "if (isset($_POST['sid'])) {" vel sätte en stopper for?
Avatar billede dennismp Nybegynder
02. september 2004 - 10:48 #16
Nej;

<option selected>Vælg overskrift</option>

vil gøre, at $_POST['sid'] er "Vælg overskrift" ..

Du kan rette det til

<option selected value="">Vælg overskrift</option>

og så din if

if(!empty($_POST['sid']) )

alternativt, kan du jo bare se om sid er ulig med "Vælg overskrift", men så vil din kode ikke virke, hvis du ændre den tekst.
Avatar billede michael_stim Ekspert
02. september 2004 - 10:55 #17
Der sad den dennis. Märkeligt har brugt samme kode på en anden side og det virker. Eller det kan jo ikke väre samme kode, for så havde det virket her også ;o) troede det var samme kode.
Läg et svar. Og tak for hjälpen.
Avatar billede dennismp Nybegynder
02. september 2004 - 10:59 #18
Det var så lidt :)
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