【问题标题】:If data = 0 then do not update(execute) table. (JavaScript/SQL)如果 data = 0 则不更新(执行)表。 (JavaScript/SQL)
【发布时间】:2016-07-28 07:16:32
【问题描述】:

我只希望在“VacantSpaces”不为 0 时执行更新查询。换句话说,一旦特定事件不再有任何空格,“VacantSpaces”将为 0,因此用户应该无法加入,号码不会变为-1、-2等。

但是我不太确定该怎么做。

JavaScript 函数:

function updateEvent(title) {
    db = window.openDatabase("SoccerEarth", "2.0", "SoccerEarthDB", 2 * 1024 * 1024);
    db.transaction(function(tx) {
        tx.executeSql("Update EventSoccer SET VacantSpaces = VacantSpaces -1, NoPeople = NoPeople + 1 
                       WHERE Title = '" + title + "'", 
                       [], 
                       successJoin,
                       errorCB
        );
    });

    function successJoin() {
        navigator.notification.alert("You have joined the event!",
                                      null, 
                                      "Information", "ok");

        $( ":mobile-pagecontainer" ).pagecontainer( "change", "#page4" );
    }
}

【问题讨论】:

    标签: javascript sql sqlite cordova


    【解决方案1】:

    您是否尝试过这样的查询:

    tx.executeSql("Update EventSoccer SET VacantSpaces = VacantSpaces -1, NoPeople = NoPeople + 1 
                   WHERE Title = '" + title + "' AND VacantSpaces > 0", 
                   [], 
                   successJoin,
                   errorCB
    );
    

    注意:请使用您传递给函数的空数组 [] 作为第二个参数来清理您的输入。

    【讨论】:

    • 谢谢伙计,“AND VacantSpaces > 0”很有效。但是,您忘记在 0 后面加上双引号。
    • 虽然当VacantSpaces为0时数据库不再更新,但是如何提醒用户不能从上面的代码加入,因为此时成功提示还在出现?
    • 你说得对,我已经修正了引号。要实现这一点,你应该使用一个单独的查询,或者假设如果这个查询返回一个空对象,那么要么是无效的 title 要么VacantSpaces 为 0 由于您正在执行 UPDATE 查询,因此您无法检索数据
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-09
    • 2015-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-30
    • 1970-01-01
    相关资源
    最近更新 更多