S'échapper des requêtes SQL dans Codeigniter
Je suis d'insérer des données dans une table MySQL à l'aide de CodeIgniter. Parce que je suis en utilisant INSERT IGNORE INTO
et de ne pas modifier les enregistrements actifs de classe pour activer cette fonctionnalité, je suis de la génération de la requête SQL manuellement.
$this->db->query("INSERT IGNORE INTO my_table(lat, lng, date, type)
VALUES ('" . $data['lat'] . "', '" . $data['lng'] . "', '" . $data['date'] . "', '" . $data['type'] . "')");
Problème: La requête a échoué lorsque la chaîne de $data['type']
contenait un seul devis. Comment puis-je faire en sorte que ces caractères doivent être échappés obtient échappé automatiquement, comme lors de l'utilisation d'enregistrements Actifs?
Et qu'en est-il d'une requête de sélection? Comment je peux leur échapper?
OriginalL'auteur Nyxynyx | 2012-06-10
Vous devez vous connecter pour publier un commentaire.
Un autre moyen est d'utiliser la Liaison de Requête qui s'échappe automatiquement toutes les valeurs:
$this->db->query($sql, $data);
Cela fonctionne pour moi! (Je suppose que vous ne devriez pas avoir toutes les autres clés dans le tableau de données pour qu'il fonctionne)Ou de le réécrire Modèle d'Enregistrement Active:
$this->db->inset('some_table', $data);
beaucoup plus simple et très facile. Juste assurez-vous qu'aucune auto-incrément champ de clé primaire dansinsert()
, en utilisant la méthodeif (!isset($data['id'])) throw new { InvalidArgumentException('data[id] is not allowed for insert'); }
OriginalL'auteur Yan Berk
utilisation $this->db->escape(); il échappera à la chaîne automatiquement
Voici la référence Cliquez Ici
mise à jour du lien: codeigniter.com/userguide2/database/queries.html
$this->db->escape() ajoute les guillemets simples, et ainsi nous n'avons pas encore dans votre requête, vous avez ajoutés.(Je ne sais pas si c'est la version la différence, ou quoi, je suis en utilisant 3.1.*) Plus tôt aujourd'hui, j'ai écrit une requête et puis j'ai rencontré un Problème lorsque j'avais fait cette erreur.
OriginalL'auteur Moyed Ansari