2014-02-12 179 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'