2013-09-13 2 views
1

На самом деле это смущает.Измененная переменная XML меняется в cfquery? - Coldfusion и Bing

Я анализирую XML-геокод из Bing - и, похоже, я получаю переменную просто отлично. Однако, когда я использую эту переменную в своем Query - я не получаю значение переменной, но всю строку XML ?!

<cfset variables.BingXML = xmlparse(cfhttp.filecontent)> 

<cfset variable.Bing.Lat = "#variables.BingXML.Response.ResourceSets.ResourceSet.Resources.Location.Point.Latitude#"> 
<cfset variable.Bing.Lon = "#variables.BingXML.Response.ResourceSets.ResourceSet.Resources.Location.Point.Longitude#"> 
<cfoutput> 
#variable.Bing.Lat# 
#variable.Bing.Lon# 
</cfoutput> 

Это возвращает правильные цифры:

38.4935302734375 
-101.35395050048828 

Но в cfquery я получаю:

SELECT NATSS_Locations.*, NATSS_PaymentTypes.PTName, NATSS_PaymentTypes.PTImage, NATSS_PaymentTypeLinks.NPTLID, 
    NATSS_NationalAccounts.NNAImage, NATSS_NationalAccounts.NNAName, NATSS_LocNationalAcctLink.NLNALID, 
    ((3963.191 * ACOS((SIN(PI() * '#variable.Bing.Lat#'/180) * SIN(PI() * NATSS_Locations.LocationLat/180)) + (COS(PI() * #variable.Bing.Lat# /180) * cos(PI() * NATSS_Locations.LocationLat/180) * COS(PI() * NATSS_Locations.LocationLong/180 - PI() * #variable.Bing.Lon#/180)))) * 1) as Distance 

становится:

SELECT NATSS_Locations.*, NATSS_PaymentTypes.PTName, NATSS_PaymentTypes.PTImage, NATSS_PaymentTypeLinks.NPTLID, 
    NATSS_NationalAccounts.NNAImage, NATSS_NationalAccounts.NNAName, NATSS_LocNationalAcctLink.NLNALID, 
    ((3963.191 * ACOS((SIN(PI()  * '<?xml version="1.0" encoding="UTF-8"?><Latitude xmlns="http://schemas.microsoft.com/search/local/ws/rest/v1">38.4935302734375</Latitude>'/180) * SIN(PI() * NATSS_Locations.LocationLat/180)) + (COS(PI() * <?xml version="1.0" encoding="UTF-8"?><Latitude xmlns="http://schemas.microsoft.com/search/local/ws/rest/v1">38.4935302734375</Latitude> /180) * cos(PI() * NATSS_Locations.LocationLat/180) * COS(PI() * NATSS_Locations.LocationLong/180 - PI() * <?xml version="1.0" encoding="UTF-8"?><Longitude xmlns="http://schemas.microsoft.com/search/local/ws/rest/v1">-101.35395050048828</Longitude>/180)))) * 1) as Distance 

Кто-нибудь есть решение или идею о это?

+0

Ничего общего с оригинальным вопросом, но не забывайте использовать 'cfqueryparam' для защиты от SQL инъекций, среди прочего , – Leigh

ответ

2

На

<cfset variable.Bing.Lat    
    = "#variables.BingXML.Response ... Point.Latitude#"> 
<cfset variable.Bing.Lon   
    = "#variables.BingXML.Response ... Point.Longitude#"> 

Вы должны иметь что-то вроде:

<cfset variable.Bing.Lat    
    = variables.BingXML.Response ... Point.Latitude.xmlText> 
<cfset variable.Bing.Lon    
    = variables.BingXML.Response ... Point.Longitude.xmlText> 
+0

Awesome - Я знал, что это будет что-то простое, что я пропал без вести. Спасибо! –

Смежные вопросы