Avatar billede hkb-x Nybegynder
12. december 2005 - 10:46 Der er 12 kommentarer og
1 løsning

undgå problemer med ' i sql forespørgsler

jeg får kontakt til min database på denne måde:

dbInsert("insert into $table (data, tid) values ('$data', now())");

men hvis $data indeholder tegnet ' så kommer der en eooer ... hvordan undgår jeg det?
Avatar billede hkb-x Nybegynder
12. december 2005 - 10:50 #1
eooer betyder selvfølgeligt ERROR
Avatar billede den-evil Nybegynder
12. december 2005 - 10:53 #2
du kan lave en replace på strengen:

$data = str_replace("'", "", $data);
Avatar billede elskermad.dk Nybegynder
12. december 2005 - 10:53 #3
<?

$data = addslashes($data);

dbInsert("insert into $table (data, tid) values ('$data', now())");

?>
Avatar billede den-evil Nybegynder
12. december 2005 - 10:54 #4
Hov, læste vist spm forkert :)
Avatar billede jakobdo Ekspert
12. december 2005 - 10:56 #5
Endnu bedre:
<?
//Noget connect til din DB, ellers kan du ikke bruge mysql_real_escape_string()
$data = mysql_real_escape_string($data);

dbInsert("insert into $table (data, tid) values ('$data', now())");

?>
Avatar billede hkb-x Nybegynder
12. december 2005 - 11:18 #6
@elskermad.dk

skriv svar for point... ;)
Avatar billede dustie Mester
12. december 2005 - 19:05 #7
Bare lige så du er klar over det så er addslashes ikke lige så god til den slags som mysql_real_escape_string der er lavet til formålet. Prøv evt at kigge på mysql.com og php.net

Personligt ville jeg nok dele de points lige over mellem elskermad.dk og jakobdo, men det er selvfølgelig op til dig selv :)
Avatar billede jakobdo Ekspert
12. december 2005 - 20:00 #8
Tak for lidt support!
Folk ved jo ikke altid hvad der er bedst!
Avatar billede hkb-x Nybegynder
13. december 2005 - 15:12 #9
hmm... ka du ha ret i... til mit problem gør det ingen forskel...

så hvad er forskellen... (kan du svare på det får du point jakobdo efter som elskermad.dk ikke svarer)...
Avatar billede jakobdo Ekspert
13. december 2005 - 15:25 #10
Fra php.net:

addslashes()
Returns a string with backslashes before characters that need to be quoted in database queries etc. These characters are single quote ('), double quote ("), backslash (\) and NUL (the NULL byte).

mysql_real_escape_string() calls MySQL's library function mysql_escape_string, which prepends backslashes to the following characters: NULL, \x00, \n, \r, \, ', " and \x1a.
Avatar billede hkb-x Nybegynder
13. december 2005 - 15:32 #11
ok... så fyr dit svar... ;)
Avatar billede jakobdo Ekspert
13. december 2005 - 15:35 #12
svar!
Avatar billede jakobdo Ekspert
13. december 2005 - 23:24 #13
Takker for point!
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