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. p>
J'aimerais connaître son équivalent à Zend Framework 2? P>
3 Réponses :
Il est toujours là (un peu), décédez [ édition forte>] zf2 / bibliothèque / zend / dB / adaptateur / plate-forme / votre adaptateur de données code> J'ai trouvé environ 6 différents
devis () code> méthodes Disponible dans le Variante MySQL . Je pense que ce que
utevalue () code> a remplacé le
quoteinto () code> Nous sommes tous utilisés. P>
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. P>
QuoteInto Code> prend deux paramètres: la chaîne et la valeur remplacée mais
utevalue code> ne prend que 1 paramètre. Comment devrais-je l'utiliser?
Malheureusement, la méthode in zf2 il y a la méthode Cependant, vous pouvez utiliser 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.
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>
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;
}
}
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 A > (selon votre base de données) et suivez certains des exemples ci-dessous qui utilisent des requêtes préparées. P>