在sql where子句中添加动态值,但它不起作用

时间:2011-03-17 16:47:37

标签: sql

我正在尝试将下拉列表中的月份值添加到where子句中,但它不起作用。

如果我从下拉列表中选择1月份,则hello变量应包含该月份。

我能够提取月份并存储在hello变量中,但它不能使用where子句。任何建议将不胜感激

function tree() {
    alert("abc");
    var shortName = 'EXPDB';  
    var version = '';  
    var displayName = 'EXPENSE Database';  
    var maxSize = 2*1024*1024; //  bytes  
    EXPDB = window.openDatabase(shortName, version, displayName, maxSize);  
    EXPDB.transaction(
        function (transaction) {
            var hello= $('#mchoose').val();//Contains the month value from drop down list
            alert("Wass"+hello);
            transaction.executeSql("SELECT SUM(amount1) AS OrderTotal FROM budget1 WHERE month= "+hello+" ", [], dataSelectHandler, errorHandler)
        }
     );
 }

1 个答案:

答案 0 :(得分:3)

对于非数字值,您必须将值包装在单引号中:

var mySQL = "SELECT SUM(amount1) AS OrderTotal FROM budget1 WHERE month='"+hello+"'";

transaction.executeSql(mySQL, [], dataSelectHandler, errorHandler);

为此,我们假设您的month列的数据类型为varchar

您似乎正在使用表单值并对数据库执行权限。请注意:这会让您面临一个巨大的SQL注入漏洞。