0

このコードがある場合、ループした値を配列に入れるにはどうすればよいですか?

local data = {
 for row in db:nrows("SELECT song.id, song.title as title, artist.name as name FROM song, artist where song.artist_id = artist.id") do
    {
     song = row.title,
     artist = row.name
    }
  end
}

しかし、私はこのエラーが発生しました:

unexpected symbol near 'for'

こんな顔になりたかった…

local data = {
 { 
   song = "HI",
   artist = "Tom"
 }
 {
   song = "Hello",
   artist = "mike"
 }
...
}

誰かが私の状況について私を助けたり、アドバイスをくれたりできますか? 前もって感謝します

4

2 に答える 2

3

あなたはこのようなことをしなければならないでしょう、私は思います:

result = db:nrows("SELECT song.id, song.title as title, artist.name as name FROM song, artist where song.artist_id = artist.id")

data = {}
for i, row in ipairs(result) do
  data[i] = {}
  data[i].song = row.title
  data[i].artist = row.name
end

編集:ただし、質問:SQLクエリでそれを指定して、結果をそのまま使用しないのはなぜですか? すなわち:

data = db:nrows("SELECT song.id, song.title as song, artist.name as artist FROM song, artist where song.artist_id = artist.id")
于 2012-05-11T08:46:37.320 に答える
2

ドキュメント dbn:rows を見ると、行が繰り返され、テーブルが返されます。したがって、{} が問題の原因です。

ローカル データ = {}

for row in db:nrows("SELECT song.id, song.title as song, artist.name as artist FROM song, artist where song.artist_id = artist.id") do
  table.insert(data,row)
end

私は Coruna を持っておらず、別の lua システムを使用しているため、上記をテストできませんでした。

参照: http://lua.sqlite.org/index.cgi/doc/tip/doc/lsqlite3.wiki#db_nrows

于 2012-05-11T08:53:07.647 に答える