Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript sqlite中的select查询是否存在问题?_Javascript_Arrays_Sqlite_Cordova_Asynchronous - Fatal编程技术网

Javascript sqlite中的select查询是否存在问题?

Javascript sqlite中的select查询是否存在问题?,javascript,arrays,sqlite,cordova,asynchronous,Javascript,Arrays,Sqlite,Cordova,Asynchronous,我试图迭代一个动态数组作为select查询的输入。没有为所有数组元素触发select查询。我在for循环中编写了select查询,问题是循环首先触发,select查询只对数组的最后一个元素执行。这可能是由于异步功能。如何解决这个问题,我的代码如下: function sendCategoryDetailsNew(myLocation) { var myLocationcoordinates = new Array(); var db = window.sqlitePlugin

我试图迭代一个动态数组作为select查询的输入。没有为所有数组元素触发select查询。我在for循环中编写了select查询,问题是循环首先触发,select查询只对数组的最后一个元素执行。这可能是由于异步功能。如何解决这个问题,我的代码如下:

function sendCategoryDetailsNew(myLocation)
{
     var myLocationcoordinates = new Array();
     var db = window.sqlitePlugin.openDatabase({name: "MYDB"});
    for (var i = 0; i < myLocation.length; i++)
    {
    var locationName = myLocation[i];
    alert(locationName);
    db.transaction(function (tx) {
   tx.executeSql("select Coordinates from Locationlog WHERE Location = '"+locationName+"';", [], function (tx, res)
  {
   for (var i = 0; i < res.rows.length; i++)
   {
      alert("Location : "+locationName+ " Latlongs :"+ res.rows.item(i).Coordinates);
      myLocationcoordinates[i] = res.rows.item(i).Coordinates;
    }
  });
 });
 }
}
函数sendCategoryDetailsNew(myLocation)
{
var myLocationcoordinates=新数组();
var db=window.sqlitePlugin.openDatabase({name:“MYDB”});
对于(变量i=0;i
函数sendCategoryDetailsNew(myLocation)
{
var myLocationcoordinates=新数组();
var db=window.sqlitePlugin.openDatabase({name:“MYDB”});
var locationsList=“\'”+myLocation.join(“\',\'”)+“\'”;
数据库事务(功能(tx){
tx.executeSql(“选择位置,从位置日志中选择坐标,位置在(?)”,位置列表,函数(tx,res){
对于(var i=0;i
我没有循环遍历两组值,而是将
myLocation
数组编译成一个字符串,该字符串可用于
in
sql语句中的
。这将返回
myLocation
数组的所有结果,然后遍历它们进行处理


这减少了大量处理,也减少了函数中的失败点。

将尝试让您知道。:)我没有收到任何警报,是否需要更改查询?字符串将如何迭代?更新的答案。假设有多个结果,则不应发出警报,更改为
console.log
。另外,我假设由于您之前进行了迭代,所以传入了多个位置,这段代码将创建一个字符串,用于
in
语句中的
,该语句用于根据信息列表查找记录。它也不会在控制台中打印。有没有办法在不同的输入上迭代select查询