You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
After a lot of trial and error, guesswork and using the debugger I got it solved!
Many days and many hours of frustration. But, "Nothing beats perserveance"
I guess it can be expanded to retrieve more than one field but for my purpose one field at the time works fine.
I have "faked" a "MySQL_Row"
struct Mysql_row
{
uchar header[8]; //Not used
uchar data[50]; //maximum length on single field reply
};
declare mysql_fetch_row like:
Mysql_row mysql_fetch_row(int result);
retrieve:
//+------------------------------------------------------------------+
//| Get single field String value from MySQL |
//+------------------------------------------------------------------+
string getSTRField(string query2)
{
string ansiquery;
Mysql_row my_row;
ansiquery=UNICODE2ANSI(query2);
int length=StringLen(query2);
int res2 = mysql_real_query(mysql,ansiquery,length);
if(res2!=0)
{
Print("result of query != 0!! mysql: "+IntegerToString(mysql) );
Logger("getSTRField","query result", "mysgl:",IntegerToString(mysql) );
int mysqlerr=mysql_errno(mysql);
if (mysqlerr>0)
{
Print("Query: ",query2);
Print("Returned error: ",ANSI2UNICODE(mysql_error(mysql)) );
Logger( "Returned error: ", ANSI2UNICODE(mysql_error(mysql)) );
}
}
int res_store = mysql_store_result(mysql);
if(res_store==0)
{
Print("ANSI2UNICODE(mysql_error(mysql)) ); = 0!!");
Print("GetLastError MySQL: " + DoubleToString(GetLastError(),0));
Logger("getSTRField","GetLastError",DoubleToString(GetLastError(),0));
return("");
}
int numOfRows = mysql_num_rows(res_store);
int num_fields = mysql_num_fields(res_store);
if(numOfRows==0)
{
Logger("No row found; ",query2);
return("");
}
string head="";
string dat ="";
my_row = mysql_fetch_row(res_store); //Only pick up first occurrence.
// for(int x = 0;x<8;x++) //Skip funny header
// {
// head = head + CharToString(my_row.header[x]);
// }
for(int x = 0;x<50;x++) //get data, One field, maximum length 50
{
if(my_row.data[x] == 0) break; //end
dat = dat + CharToString(my_row.data[x]); //add it up in a string
}
mysql_free_result(res_store);
return(dat);
}