Avatar billede Fiber Bjørn Juniormester
27. august 2010 - 16:45 Der er 10 kommentarer og
1 løsning

Datatype i MYSQL

Hvordan kan jeg undgå at det indtastet ikke bliver afvist når det sendes til MYSQL hvis der er et tegn i teksten som dette '

Og ved ikke helt om dette spørgsmål høre til i denne gruppe eller i Databaser/MySQL
Avatar billede mortvader Nybegynder
27. august 2010 - 17:33 #1
Kan du ikke bare replace det tekst du sætter ind?

value=replace(value,"'","''")
Avatar billede arne_v Ekspert
27. august 2010 - 18:03 #2
Hvis det er et problem saa staar din applikation formentlig piv aaben for SQL injection.

Som absolut minimum brug mysql_real_escape_string.

Bedre brug mysqli (eller PDO) og prepared statement.
Avatar billede Fiber Bjørn Juniormester
27. august 2010 - 23:11 #3
Jeg har ikke brugt denne mysql_real_escape_string() så meget da jeg stadig er lidt ny i det og ikke har kendt til konsekvenserne ved ikke bruge denne.

Hvad er den rigtigste måde så at bruge den på???
Jeg har alle disse felter:

mysql_query("insert into hold (kodeord, hold_gruppe, hold, navn, addresse, postby, tlf, mobil, email, fodselsdag, alder, hojde, dato, ip, dp, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, aargang) values ('$_POST[kodeord]','$_POST[hold_gruppe]','$_POST[hold]','$_POST[navn]','$_POST[addresse]','$_POST[postby]','$_POST[tlf]','$_POST[mobil]','$_POST[email]','$_POST[fodselsdag]','$_POST[alder]','$_POST[hojde]','$date','$_SERVER[REMOTE_ADDR]','$_POST[dp]','$_POST[a1]','$_POST[a2]','$_POST[a3]','$_POST[a4]','$_POST[a5]','$_POST[a6]','$_POST[a7]','$_POST[a8]','$_POST[a9]','$_POST[a10]','$_POST[aargang]')");

og jeg har gjort sådan før, altså lave $_POST["kodeord"] om til $kodeord via
$kodeord = mysql_real_escape_string($_POST["kodeord"]);

kan det ikke sættes ind i
mysql_query("insert into hold......
på en eller anden måde ?
Avatar billede arne_v Ekspert
28. august 2010 - 23:12 #4
Hvis du er tilhænger af ulæselig kode kan du altid bruge:

mysql_query("..." . mysql_real_escape_string($_POST['kodeord']). "...");
Avatar billede Fiber Bjørn Juniormester
01. september 2010 - 09:02 #5
Nu kan det godt være at jeg ikke er helt med men jeg har lige prøvet dette.

mysql_query("insert into hold (kodeord) values (mysql_real_escape_string($_POST['kodeord']))");

og der siger Dreamweaver at der er en fejl i koden, men det er nok mig der er helt galt på den :)
Avatar billede Fiber Bjørn Juniormester
01. september 2010 - 09:11 #6
Til at strate med rettede jeg det til dette

mysql_query("insert into hold (kodeord) values ('mysql_real_escape_string($_POST[kodeord]))");

men der bliver resultatet

mysql_real_escape_string(det der er indtastet)

????
Avatar billede arne_v Ekspert
01. september 2010 - 15:38 #7
Ja. Naturligvis.

mysql_query("insert into hold (kodeord) values ('" . mysql_real_escape_string($_POST['kodeord']) . "')");
Avatar billede Fiber Bjørn Juniormester
03. september 2010 - 13:27 #8
#7
Det er bare så smukt, det virker jo :)
smid et svar så får du hav delen af point.
Avatar billede Fiber Bjørn Juniormester
03. september 2010 - 13:30 #9
#1
"replace" er det det eneste våben der er imod sådanne tegn. Kan man ikke kalde Datatype noget andet inde MYSQL. Tekst har jeg prøvet, det virker ik :)
Avatar billede arne_v Ekspert
03. september 2010 - 14:17 #10
svar
Avatar billede Fiber Bjørn Juniormester
11. september 2010 - 09:55 #11
Giver point da #1 ikke svarrer tilbage.
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