Ich versuche, eine Abfrage parametrisieren, die derzeit funktioniert und ist für einen SQL-Injection-Angriff reif:parametrieren ORM-Abfrage mit dem in Klausel
qryAwards = ORMExecuteQuery(
"from Award where awardID in (#form.deleteAwardList#) and Game.Season.User.userID=:uid",
{uid=session.userID}
);
if(not isNull(qryAwards) and arrayLen(qryAwards)){
for(i in qryAwards){
entityDelete(i);
}
}
ich schon versucht, diese, ohne Apostrophe die param mit:
qryAwards = ORMExecuteQuery(
"from Award where awardID in (:awardList) and Game.Season.User.userID=:uid",
{awardList=form.deleteAwardList, uid=session.userID}
);
ich halte die folgende Fehlermeldung erhalten:
The value 117,118 cannot be converted to a number.
Und dies mit dem param in einfache Anführungszeichen eingeschlossen:
qryAwards = ORMExecuteQuery(
"from Award where awardID in (':awardList') and Game.Season.User.userID=:uid",
{awardList=form.deleteAwardList, uid=session.userID}
);
Ruft mir den folgenden Fehler:
Invalid parameters specified for the query.
Danke, das funktioniert! – TekiusFanatikus
Entkommt diese Herangehensweise aus Apostroph? –
Es sollte. Jedes Mal, wenn Sie Daten wie diese parametrisieren, werden Sonderzeichen wie in 'cfparam' ausgegeben. Außerdem können Sie 'cfqueryparam' mit' ORMExecuteQuery() 'nicht verwenden. Durch die Verwendung von Parametern, so wie er ist, ist es dasselbe wie die Verwendung von 'cfqueryparam' –