用JS和I'I’我没有得到我想要的全部命令

Building a SQLite statement in JS and I'm not getting the full command I want

本文关键字:我想要 命令 全部 JS      更新时间:2023-09-26

所以,我正在JS中构建一个SQLite语句。问题是,%似乎正在变成"未定义"+转义下一个字符。以下是确切的代码:

sql语句中出现问题的部分是:

"and s.plainText like '%"+searchText+"%'";

在此之前还有更多内容,但它们都是正确构建的。因此,在程序中,如果我输入以下作为搜索文本:

foo

然后,当我将构建的sql语句输出到控制台时,我得到以下内容:

and s.plainText like 'undefinedoo%'

因此,看起来%"正在变成未定义的,并导致searchText的第一个字母被转义

如何正确构建sql语句的这一部分?我必须使用"cause the statement contains"。我必须使用%cause我需要通配符来查找字符串。

如果JS指的是JavaScript,那么实际情况并非如此。这是jsfiddle:

  • http://jsfiddle.net/Ka938/

试试看,你会发现这不是JS的问题。转义可能发生在这个过程的稍后,当它到达服务器或其他地方时。不知道确切的细节来帮助那里。

作为猜测,如果您使用的是PHP和printf,那么发送%f(其中f来自您使用的foo示例)将意味着它需要一个浮点值——不过它会显示一个错误。

附带说明一下,您似乎是在将SQL从客户端发送到服务器。如果是这样的话,那么这样做可能是一个非常糟糕的主意,尤其是如果您没有执行任何SQL转义,因为您没有执行上述操作。看看这里:

  • http://en.wikipedia.org/wiki/SQL_injection

了解基本细节。

我不熟悉webOS,但检查一下这个SOq,看看它是否能正确处理SQL参数:

  • 在webOS中,我需要一个方法,它将使用输入执行sqlselect命令,并将restults作为数组返回

最终值得做更多关于如何在webOS中正确做到这一点的调查——谷歌是你的朋友。

Mojo.Log命令处理您传递的字符串,有点像C中的printf函数。也就是说,您可以指定一些占位符,这些占位符将用传递的参数的值填充。一个例子就是千言万语:

Mojo.Log.info("My string is '%s' and my number is '%f'", strData, numData);

将打印

My string is 'aaa' and my number is '1'

如果strData是"aaa"并且numData是1。

因此,您的字符串很可能是正确构建的,但打印它时会尝试用参数替换%foo%中的%f。该参数从未被传递,因此它是未定义的。如果使用其他东西而不是"foo"进行测试(请尝试"bbb"),则应该看到正确的输出。

有关更多信息,请查看Mojo.Log.的文档

PS也就是说,这样构造SQL语句不是一个好的做法,所以我不建议这样做。很容易做到,但以后很难阅读和维护:)