Avatar billede nellemuz Nybegynder
21. november 2005 - 18:48 Der er 18 kommentarer

Siden giver en underlig fejlmelding om en form for update!

Kære Eksperter.

Jeg søger en, der gider forklare mig hvorfor min kode giver denne fejlmelding i kan se herunder. Jeg har vedhæftet filen. Jeg synes det er meget underligt.
Har i forslag til rettelser så min admin blog virker?

MVH Michelle Nielsen

UPDATE blog SET dato= '2005-11-21', emne= 'Så virker blog\'en', skrevet= 'CTC ', Blog indlæg= 'Dette er det første indlæg i blog\'en og er her for at illustrere at blog\'en virker ' WHERE Id = 1
Warning: (null)(): Invoke() failed: Exception occurred. Source: Microsoft OLE DB Provider for ODBC Drivers Description: [Microsoft][ODBC Microsoft Access Driver] Syntax error in UPDATE statement. in H:\Web Sites\Nelly\projects\admin\adminblog.php on line 34


<?php
/////////////////////////////////////////////////////
//  C H E C K S  T H E  L O G I N S T A T U S    //
/////////////////////////////////////////////////////

   
session_start();

if  ($_SESSION['loggetind'] != "loggetind") {
header("Location: loginform.php");
}

////////////////////////////////////////////////////////////////////////////////////
/// E X E C U T E S  T H E  D A T A B A S E!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//
////////////////////////////////////////////////////////////////////////////////////

$blogid = $_GET['blogid'];

$db_connection = new COM("ADODB.Connection");
$db_connstr = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" . getcwd() . "//../../_rw_access/blog.mdb";
$db_connection->open( $db_connstr );



function htmlEncodeText($myHTML) {
$translation_table = get_html_translation_table( HTML_ENTITIES, ENT_QUOTES);
  $translation_table[chr( 38)] = '&';
  return preg_replace( "/&(?![A-Za-z]{0,4}\w{2,3};|#[0-9]{2,4};)/", "&amp;" , strtr( $myHTML, $translation_table));
}

if ($_GET['mode'] == "update"){
$strSQL = "UPDATE blog SET dato= '" . date("Y-m-d") ."', emne= '" . htmlEncodeText($_POST["emne"]) ."', skrevet= '" . htmlEncodeText($_POST["navn"]) ."', Blog indlæg= '" . htmlEncodeText($_POST["blog"]) ."'  WHERE Id = ".$blogid."";
echo $strSQL;
$db_connection->execute( $strSQL ) ;
} elseif ($blogid != "") {
   
$rs = $db_connection->execute( "select * from blog WHERE id= ". $blogid ."");
?>
<Form method="post" Action="adminblog.php?blogid=<?php echo $rs->Fields["Id"]->value; ?>&mode=update">
<textarea name="dato" cols="40"><?php echo date("d-m-Y",$rs->Fields["dato"]->value); ?></textarea><br>
<textarea name="emne" cols="40"><?php echo $rs->Fields["emne"]->value; ?></textarea><br>
<textarea name="navn" cols="40"><?php echo $rs->Fields["skrevet"]->value; ?> </textarea><br>
<textarea name="blog" rows="20" cols="40"><?php echo $rs->Fields["Blog indlæg"]->value; ?> </textarea><br>
<input type="submit" value="Opdater"><br>
<a href="adminblog.php">Tilbage</a>
</form>

<?php

} else {

$rs = $db_connection->execute( "select * from Blog ORDER BY dato ");
while ( ! $rs->EOF )
{
if ($rs->Fields["Id"]->value != $blogid) {
      $date = $rs->Fields["dato"]->value;
        $emne = $rs->Fields["Emne"]->value;
      $tempid = $rs->Fields["Id"]->value;
    echo "" . date("d-m-Y",$date) . " - <a href='". $PHP_SELF ."?blogid=". $tempid ."'>" . $emne . "</a><br><br>";

}
$rs->movenext();
}

}
$db_connection->close;


?>
Avatar billede plx Nybegynder
21. november 2005 - 18:56 #1
Blog indlæg

synes jeg nok, er et ret uheldig valg til kolonnenavn. Men prøv at sætte `` rundt om i din update sætning

`Blog indlæg`=
Avatar billede fixxxer Nybegynder
21. november 2005 - 18:57 #2
<spam>
Hvorfor benytter du dig ikke af en mySQL database?
</spam>
Avatar billede plx Nybegynder
21. november 2005 - 19:00 #3
Access, det havde jeg ikke engang set. Den plejer at ville have [] i stedet for ``

Ligesom den plejer at escape ' med '' i stedet for \'
Avatar billede nellemuz Nybegynder
21. november 2005 - 19:00 #4
plx---> Så giver den denne fejlmelding når jeg gør det

UPDATE blog SET dato= '2005-11-21', emne= 'Så virker blog\'en', skrevet= 'CTC ', 'Blog indlæg'= 'Dette er det første indlæg i blog\'en og er her for at illustrere at blog\'en virker ' WHERE Id = 1
Warning: (null)(): Invoke() failed: Exception occurred. Source: Microsoft OLE DB Provider for ODBC Drivers Description: [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1. in H:\Web Sites\Nelly\projects\admin\adminblog.php on line 34

Hvad kan der være galt?
Avatar billede nellemuz Nybegynder
21. november 2005 - 19:00 #5
DVS jeg skal prøve []
?
Avatar billede nellemuz Nybegynder
21. november 2005 - 19:00 #6
fixxxer --> Fordi jeg lyster at bruge det
Avatar billede nellemuz Nybegynder
21. november 2005 - 19:14 #7
Virker heller ikke PLX
Avatar billede fixxxer Nybegynder
21. november 2005 - 19:29 #8
Indtil videre ser det jo ud til at den lyst giver anledning til en masse problemer..

Hvis ikke du bruger Access-databasen til andet end skrive til og slå op i, så kunne du ligeså godt benytte MySQL - og samtidigt slippe for alle problemerne.
Avatar billede nellemuz Nybegynder
21. november 2005 - 19:31 #9
Hmm.. Ved ikke rigtig om jeg har lyst til at starte ud med MySQL nu...

Håbede lidt nogen kunne hjælpe?
Avatar billede fixxxer Nybegynder
21. november 2005 - 19:32 #10
Jeg vil samtidigt lige bemærke at det her spørgsmål ikke (længere) har noget at gøre med PHP, men snare om Microsoft Access - tror du vil få mere brugbar hjælp i Access-kategorien.
Avatar billede plx Nybegynder
21. november 2005 - 19:38 #11
Det er nok dine apostroffer som giver problemerne. php escaper dem med \
Prøv at oprette en post, hvor de ikke indgår i titel og indhold
Avatar billede nellemuz Nybegynder
21. november 2005 - 19:39 #12
Ville bare gerne have hjælp til koden
Avatar billede nellemuz Nybegynder
21. november 2005 - 19:40 #13
hvad mener du PLX?

Er lidt lost nu *SUK*
Avatar billede plx Nybegynder
21. november 2005 - 19:42 #14
emne= 'Så virker blog\'en'

databasen bliver forvirret, når den ser alle de apostroffer. Så de skal escapes. Ovenstående er mysql's måde at gøre det på. Access gør det sådan:

emne= 'Så virker blog''en'

Så prøv for alle felter du indsætter i databasen

1) $text = stripslahes($text);
2) $text = str_replace($text, "''", "'");
Avatar billede plx Nybegynder
21. november 2005 - 19:43 #15
1) den hedder helt korrekt, stripslahes
Avatar billede plx Nybegynder
21. november 2005 - 19:44 #16
1) jeg er træt, derfor spammer jeg lidt :o

stripslashes

er det korrekt navn
Avatar billede nellemuz Nybegynder
21. november 2005 - 19:53 #17
Okay - men hvor skal det indsættes?

Sorry - Er lidt forvirret lige nu...
Avatar billede fixxxer Nybegynder
21. november 2005 - 22:33 #18
$strSQL = stripslashes("UPDATE blog SET dato= '" . date("Y-m-d") ."', emne= '" . htmlEncodeText($_POST["emne"]) ."', skrevet= '" . htmlEncodeText($_POST["navn"]) ."', Blog indlæg= '" . htmlEncodeText($_POST["blog"]) ."'  WHERE Id = ".$blogid."");

-- men vær opmærksom på at det blot er en copy/paste af din originale SQL - ikke den du måtte være kommet frem til vha. plx's anvisninger. Det er altså blot for at vise dig hvordan du bruger stripslashes.
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