[php/interbase] quotes in invoer tekst geven error

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Als ik quote's in een berichtje van mijn formulier in de database wil zetten krijg ik een fout :

Warning: InterBase: Dynamic SQL Error SQL error code = -104 Token unknown - line 1, char 241 fsadfasdfsadfsdf in c:\phpdev\www\public\forum_nieuwprobleem2.php on line 58
Je bericht is verstuurd!

VorigeINSERT INTO FAQ (FAQ_NR, WN_ID, FAQ_TITEL, FAQ_DATUM, RT_ID, PROG_ID, APP_ID, FAQ_TEKST1OPLOSSING, FAQ_TEKST2OPLOSSING, FAQ_TEKST3OPLOSSING, FAQ_TEKST4OPLOSSING) VALUES ('3','80','asfasdfsad','2004-03-09 10:28','1','0','0','sdfasdfsdafdsa\\'fsadfasdfsadfsdf','','','')

mijn php code is :
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// hier word de tekst geplitst in stukjes van 255 karakters
$bericht = ($_POST['add_bericht']);
$bericht1 = substr($bericht, 0, 255);    // laat 255 karakters zien vanaf het 0e karakter
$bericht2 = substr($bericht, 255, 255);    // laat 255 karakters zien vanaf het 255e karakter
$bericht3 = substr($bericht, 510, 255);    // laat 255 karakters zien vanaf het 510e karakter
$bericht4 = substr($bericht, 765, 255);    // laat 255 karakters zien vanaf het 765e karakter

$datum = date("Y-m-d H:i"); // datum in het bericht

echo "<b>veld 1</b> $bericht1 <br><br>";
echo "<b>veld 2</b> $bericht2 <br><br>";
echo "<b>veld 3</b> $bericht3 <br><br>";
echo "<b>veld 4</b> $bericht4 <br><br>";

$query="INSERT INTO FAQ (FAQ_NR, WN_ID, FAQ_TITEL, FAQ_DATUM, RT_ID, PROG_ID, APP_ID, FAQ_TEKST1OPLOSSING, FAQ_TEKST2OPLOSSING, FAQ_TEKST3OPLOSSING, FAQ_TEKST4OPLOSSING) VALUES ('".$_POST['add_nr']."','".$_POST['add_gebruikersnaam']."','".$_POST['add_onderwerp']."','".$datum."','".$_POST['add_reactietype']."','".$_POST['add_programmeertaal']."','".$_POST['add_applicatie']."','".$bericht1."','".$bericht2."','".$bericht3."','".$bericht4."')";


alles werkt verder alleen zodra ik een ' in de tekst heb staan gaat het mis

ik heb al addslashes en stripslashes geprobeerd enzo maar het werkte toen nog steeds niet...
ik hoop dat iemand een oplossing weet

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
owja dat
PHP:
1
2
3
4
echo "<b>veld 1</b> $bericht1 <br><br>"; 
echo "<b>veld 2</b> $bericht2 <br><br>"; 
echo "<b>veld 3</b> $bericht3 <br><br>"; 
echo "<b>veld 4</b> $bericht4 <br><br>";

was om even te kijken hoe die de tekst weergaf dus dat kun je wel wegdenken...

Acties:
  • 0 Henk 'm!

  • Delphi32
  • Registratie: Juli 2001
  • Laatst online: 20:30

Delphi32

Heading for the gates of Eden

In Delphi heb je daar een functie voor, QuotedStr. Die neemt een string, zet daar quotes omheen en verdubbelt alle quotes die in de string voorkwamen. Het resultaat van deze functie is dan verstuurbaar naar Interbase.
Voor PHP is vast ook zoiets.

Acties:
  • 0 Henk 'm!

  • jwchess
  • Registratie: Februari 2001
  • Niet online

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik heb het probleem al opgelost
moest in php.ini

; Use Sybase-style magic quotes (escape ' with '' instead of \').
magic_quotes_sybase = Off

veranderen in

; Use Sybase-style magic quotes (escape ' with '' instead of \').
magic_quotes_sybase = On

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

't Is wat netter om de ibase_prepare te gebruiken, zeker als je dezelfde query vaak achter elkaar in je applicatie aanroept.
Verder is het gebruik van magic_quotes in php nogal irritant, omdat het alle ingevoerde data escaped, ook de data die niet je database ingaat en dan moet je dat weer unescapen (waar php dan weer geen functie voor heeft, in het geval van de '' escaping).

Een andere optie is dus om ' te replacen met '', dmv str_replace of een dergelijke functie, maar bij ibase_prepare/execute is dat als het goed is niet nodig.

Acties:
  • 0 Henk 'm!

  • Skaah
  • Registratie: Juni 2001
  • Laatst online: 16-09 18:38
Zijn er in Interbase geen velden die mere dan 255 karakters kunnen bevatten?

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 21-09 14:28
Skaah schreef op 09 maart 2004 @ 17:20:
Zijn er in Interbase geen velden die meer dan 255 karakters kunnen bevatten?
Natuurlijk wel, ik heb hier een tijdje geleden ook al eens opgewezen met een lijstje van de beschikbare veldtypen. Ik ga even kijken of ik het topic nog kan vinden.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ow hier op mijn stage bedrijf zeggen ze van niet :?
Pagina: 1