2014-02-12 101 views
0

我试着用几种不同的方法重写这个查询,但没有运气。非常感谢这里的帮助。无法解析查询

function createWaterBodyDropDown(region) { 

    var query = "SELECT 'LAKE_NAME' FROM 1IfQgRAeKPbVJwEpAnqqpYlN8sgiPMg1VQ_RyArI WHERE 'REGION'=" + '"' + region + '"'; 

    var queryText = encodeURIComponent(query); 
    var gvizQuery = new google.visualization.Query(
     'http://www.google.com/fusiontables/gvizdata?tq=' + queryText); 


    //Send query and draw table with data in response 
    gvizQuery.send(function (response) { 
     var str; 
     var numRows = response.getDataTable().getNumberOfRows(); 
     var numCols = response.getDataTable().getNumberOfColumns(); 

     var name = [ 
      '<label style="font-weight:bolder;font-size:16px">Water body: </label>' + '<select id="waterbody_menu" style="font-size:16px;" onchange="select_waterBody(this.options[this.selectedIndex].value);">' + '<option value="">--All--</option>' 
     ]; 

     for (var i = 0; i < numRows; i++) { 
      var val = response.getDataTable().getValue(i, 0); 
      name.push("<option value=" + "'" + val + "'" + ">" + val + "</option>"); 
     } 
     name.push('</select>'); 
     document.getElementById('waterBody_container').innerHTML = name.join(''); 

    }); 

} 
+0

你把你列'LAKE_NAME'和'单引号内REGION',但在你的SQL双引号内使用您的区域价值,让您的SQL字符串结尾看起来像:'SELECT 'LAKE_NAME'FROM 1IfQgRAeKPbVJwEpAnqqpYlN8sgiPMg1VQ_RyArI WHERE'REGION'=“foobar”'这是故意的,还是会导致任何问题? – duncan

+0

嗨,是的,这是故意的......我也试着写这个查询如下:var query =“SELECT LAKE_NAME FROM 1IfQgRAeKPbVJwEpAnqqpYlN8sgiPMg1VQ_RyArI WHERE REGION =”+ region; var query =“SELECT LAKE_NAME FROM 1IfQgRAeKPbVJwEpAnqqpYlN8sgiPMg1VQ_RyArI WHERE REGION =”+'“'+ region +'”';我猜测,goolge已经改变了他们的api。 – Michael

回答

0

您的列名没有特殊字符,因此它们不需要加引号,尽管它们可以是(带单引号)。字符串值必须用单引号引起来。有关更多详细信息,请参阅reference manual

所以:

SELECT LAKE_NAME FROM 1IfQgRAeKPbVJwEpAnqqpYlN8sgiPMg1VQ_RyArI WHERE REGION = 'foobar'