2010-07-02 13 views
2

Je me demandais le plus longtemps que j'ai besoin en fait une ressource en direct à SQL connecté afin de pouvoir utiliser mysql_real_escape_string (string $unescaped_string [, resource $link_identifier ])Pourquoi une ressource dans mysql_real_escape_string?

Est-ce que cette fonction non seulement échapper aux données? Quel est le point de connexion? Je veux utiliser la fonction sans connexion, je discute créer un compte sans privilèges juste pour que je puisse le faire.

J'appelle une fonction wrapper runSQL(user, statement) et renvoie un tableau avec l'état data ou boolean.

J'ai pensé à faire ce runSQL(user, statement, arguments-and-validation-data)

Je veux juste une raison. Je ne peux pas trouver un "pourquoi" sur la page de manuel.

Répondre

5

L'échappement correct dépend en partie du jeu de caractères de la connexion en cours, il doit donc connaître cette information sur une connexion active.


Re votre commentaire, voici un lien vers le manuel pour l'API MySQL C, qui est utilisé par la fonction PHP:

http://dev.mysql.com/doc/refman/5.1/en/mysql-real-escape-string.html

Il dit:

Notez que mysql doit être une connexion ouverte valide. Cela est nécessaire car l'échappement dépend du jeu de caractères utilisé par le serveur.

+0

Pourriez-vous me fournir un lien vers un document à ce sujet? – Incognito

4

De la documentation mysql_real_escape_string - http://php.net/manual/en/function.mysql-real-escape-string.php

Escapes caractères spéciaux dans le unescaped_string, compte tenu du jeu de caractères de la connexion de sorte qu'il est sûr de placer dans un mysql_query()

+0

C'est ce que je cherchais. Je vous remercie. – Incognito

+0

Bonus round: Y at-il un moyen de faire cela sans être connecté? – Incognito

+0

N'utilisant pas l'extension 'mysql', non. S'il vous plaît envisager d'utiliser quelque chose de plus moderne, comme PDO ou même 'mysqli'. – Charles

0

Il est possible d'ouvrir plusieurs connexions MySQL à la fois. Habituellement, vous omettez le paramètre de ressource car vous n'utilisez qu'une seule connexion MySQL dans votre script, et par défaut la dernière connexion ouverte.