On Monday, 7 December 2015 at 14:40:12 UTC, Martin Tschierschke wrote:
When I do the following:

auto mysql = new Mysql("localhost", 3306, "mt", "", "verwaltung");
auto rows = mysql.query("select field from my_table limit 50");

foreach(row;rows){
 writeln(row["field"]);}

// second time same loop

foreach(row;rows){
 writeln(row["field"]);}

I only get the output of the first loop (50 lines), probably this is a feature
not a bug, but what kind of Object is rows?

A nested loop, did not worked either:

foreach(row;rows){
 foreach(field;row){
 writeln(field);}
}

Which other ways to access the elements of rows do I have?

Sorry, but I am very new on D, (it may be the best language available, I don't know yet, but it is really the most interesting!) thank you!

I suppose that's because the rows object is a mysql cursor, which means you can only iterate it once, and only forward (Not sure how it is implemented in mysql-d). It seems like your inner loop is exhausting it.

If you need random access or multiple iterations, you first need to copy your rows into another array/structure, and then you can do whatever you want with it.

Reply via email to