7
votes

Quelle est l'équivalent ZF2 de la méthode quoteinto () de zf1?

Dans Zend Framework 1 Il existe une méthode Quoteinto pour l'adaptateur de base de données pouvant être utilisée pour citer les relevés SQL.

J'aimerais connaître son équivalent à Zend Framework 2?


0 commentaires

3 Réponses :


0
votes

Il est toujours là (un peu), décédez zf2 / bibliothèque / zend / dB / adaptateur / plate-forme / votre adaptateur de données J'ai trouvé environ 6 différents devis () méthodes Disponible dans le Variante MySQL . Je pense que ce que utevalue () a remplacé le quoteinto () Nous sommes tous utilisés.

[ édition ]
Utilisation de l'objet de la plate-forme < / a> fournira une certaine direction, mais je pense que la plupart du temps le nouveau Les classes SQL utiliseront simplement l'API de la plate-forme pour faire la citation pour nous. J'arrive toujours à le savoir moi-même donc je ne suis pas vraiment sûr de rien.


1 commentaires

QuoteInto prend deux paramètres: la chaîne et la valeur remplacée mais utevalue ne prend que 1 paramètre. Comment devrais-je l'utiliser?



7
votes

Malheureusement, la méthode QuoteInto () code> a été supprimée avec l'introduction du nouveau zend \ db code> dans zf 2.0. Et il n'y a pas d'équivalent qui a exactement le même comportement.

in zf2 il y a la méthode utevalue () code>. Cette méthode prend une valeur sous forme de paramètre, puis cite la valeur afin que vous puissiez la mettre en sécurité dans une requête SQL en tant que valeur. P>

Cependant, vous pouvez utiliser ut utevalue () code> Pour reproduire le comportement de la méthode ZF1 QuoteInto () Code>. Vous pouvez simplement prendre le code de la méthode QuoteInto () code> à partir de zf1 , et appliquez le utevalue () code> méthode de l'objet de la plate-forme dans ZF2 à celui-ci: p>

// modified quoteInto() function for ZF2
function quoteInto($text, $value, $platform, $count = null)
{
    if ($count === null) {
        return str_replace('?', $platform->quoteValue($value), $text);
    } else {
        while ($count > 0) {
            if (strpos($text, '?') !== false) {
                $text = substr_replace($text, $platform->quoteValue($value), strpos($text, '?'), 1);
            }
            --$count;
        }
        return $text;
    }
}


0 commentaires

3
votes

Citant une déclaration SQL est l'ancienne et potentiellement mauvaise façon de le faire. Vous devez utiliser des déclarations préparées qui ont une bien meilleure protection contre l'injection SQL. J'utiliserais l'un des pilotes PDO est répertoriée ici (selon votre base de données) et suivez certains des exemples ci-dessous qui utilisent des requêtes préparées.


0 commentaires