mysql_real_escape_string - fejl

Tags:    php

<< < 12 > >>
hej, det er første gang jeg bruger denne function: mysql_real_escape_string
og kan ikke få den til at virke.

Fold kodeboks ind/udKode 


nogen der ved hvad der kan være fejlen, som sagt første gang jeg har prøvet mysql_real_escape_string



15 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
tjaa... det er også meget godt...

men du er jo måske ikke færdig med at manipulere dataen efter blot et kald.

Fold kodeboks ind/udKode 


Nu er ovenstående et meget simpelt eksempel, men beviser at man ikke nødvendigvis er færdig med at bruge forbindelsen til databasen. Men man har i mellemtide lukket forbindelsen og er derfor nødt til at oprette den igen før næste kald er muligt.



Indlæg senest redigeret d. 21.11.2008 23:52 af Bruger #10216
Jeg ved ikke om jeg har forstået..

Men er det til en query?

For så:

$noget = mysql_real_escape_string($_POST["noget"]);
mysql_query("INSERT INTO `tabel` (noget)VALUES('$noget')") or die(mysql_error());



$data = $sql->SendQuery("SELECT * FROM mobler_users WHERE id=1");

id er vel en int ?

/J



ja men hvad hvis jeg nu vil:
$data = $sql->SendQuery("SELECT * FROM mobler_users WHERE user='admin'");




Indlæg senest redigeret d. 21.11.2008 12:10 af Bruger #3427
hej, det er første gang jeg bruger denne function: mysql_real_escape_string
og kan ikke få den til at virke.

Fold kodeboks ind/udKode 


nogen der ved hvad der kan være fejlen, som sagt første gang jeg har prøvet mysql_real_escape_string


Du skal ikke escape hele din streng. Kun parametre:

$sql = "SELECT * FROM sometable WHERE name='" . mysql_real_escape_string($name) . "'";



ok, det er jo noget l*rt :(

findes der ik en anden function der kan gøre det på hele strengen?

jeg kan ik gøre:
$sql = "SELECT * FROM sometable WHERE name='" . mysql_real_escape_string($name) . "'";

da jeg først åbner en connection i min class, efter den har modtaget min query.



jeg har lavet en fuction i min klasse der connecter, køre mysql_real_escape_string, lukker forbindelse og returere res.

ville dog være glad hvis jeg kunne gøre det på en anden måde..


men Robert Larsen smid er svar så får de 10ups..

tak



forslag til denne function modtages gerne
Fold kodeboks ind/udKode 




hvis du ikke har adgang til din forbindelse når queryen oprettes så har du et par muligheder:

Du kan "fake" parametre...

$query = "SELECT * from tabel where navn = '{0}'";

og så senere

$query = str_replace('{0}', mysql_real_escape_string($navn), $query);

eller - du kan benytte dig af addslashes i stedet for mysql_real_escape_string - jeg er ikke helt sikker på forskellene, men i langt de fleste tilfælde skulle det MEGET gerne have samme resultat.



forslag til denne function modtages gerne
Fold kodeboks ind/udKode 


Beklager, men det kommer aldrig til at virke :-(
Du kan ikke vide, hvad der er legalt og hvad der ikke er legalt, så du er nødt til at opbygge strengen sikkert som beskrevet før.

Eller endnu bedre, mysqli API'et og prepared statements:
http://dk.php.net/mysqli



<< < 12 > >>
t