Javascript 出于某种原因,COALESE返回0而不是正确的值
我目前正在构建一个使用SQLite的PhoneGap/Cordova应用程序Javascript 出于某种原因,COALESE返回0而不是正确的值,javascript,sql,database,sqlite,cordova,Javascript,Sql,Database,Sqlite,Cordova,我目前正在构建一个使用SQLite的PhoneGap/Cordova应用程序 function screenONEpress(tx) { tx.executeSql( "INSERT OR REPLACE INTO PILE (word, frequency) VALUES ( ?, COALESCE( (SELECT frequency FROM PILE WHERE word = ?), 0) + 1 )", [s
function screenONEpress(tx)
{
tx.executeSql(
"INSERT OR REPLACE INTO PILE (word, frequency)
VALUES ( ?, COALESCE( (SELECT frequency FROM PILE WHERE word = ?), 0) + 1 )",
[screen1targetword] , errorcode
);
}
名为PILE的表包含名为Word、means和Frequency的列
它确实找到了正确的值。如果我显示表中的所有值,并且没有看到重复的值。但是,由于某种原因,在运行上面的SQL语句时,频率总是变为1,这意味着
SELECT frequency FROM PILE WHERE word = ?
返回零 如果这样编写查询会发生什么
INSERT OR REPLACE INTO PILE (word, frequency)
SELECT ?, COALESCE(MAX(frequency), 0) + 1, [screen1targetword] , errorcode
FROM pile
WHERE word = ?;
这应该是相同的逻辑,但是您可以直接测试
选择
,以确保它返回正确的值。正如frank所指出的,您有两个参数,并且只给出一个值,因此第二个参数始终为空
要么给出两个参数值:
tx.executeSql("... ? ... ? ...",
[screen1targetword, screen1targetword], ...);
或在两个位置使用:
tx.executeSql("... ?1 ... ?1 ...",
[screen1targetword], ...);
您在insert stmt中提供了两个占位符(?)。你不应该为他们提供两个不同的值吗??i、 e
[Screen1TargetWorld,Screen1TargetWorld]
。假设你想在这两个地方都有screen1targetword
。谢谢,圣诞快乐,老朋友