Function DE Version 5.00

@MySQLFetchRow

SQL

Syntax

@MySQLFetchRow(MySQLResultHandle;FNAnzahl[;ErgebnisFelder;...]);

Beschreibung

Holt eine Zeile ab der aktuellen Position (siehe @MySQLSeekResult) eines gespeicherten Ergebnisses einer @MySQLQuery Anfrage.
Der VSPECMYSQLRES MySQLResultHandle wird von @MySQLQuery geliefert.

HINWEIS:
Derzeit wird immer nur eine Zeile auf einmal unterstützt!!!

Die Anzahl der angegebenen ErgebnisFelder-Variablen muß mit der Anzahl der abgefragten Spalten des Query übereinstimmen.
In den ErgebnisFelder-Variablen werden die abgefragten Werte zurückgegeben.

Return:
Im Erfolgsfall wird TRUE zurückgegeben andernfalls @Error oder FALSE;

Beispiel: @MySQLFetchRow(MySQLResultHandle;FNAnzahl[;ErgebnisFelder;…]);

MySQLh
:=@MySQLInit;

MySQLError:=1;
IF(@IsError(MySQLh)){
   @LogReport(MySQLh;3);
}ELSE{
   @MySQLOptions(MySQLh);
   
   MySQLUser:="MySQLConnectorUser";
   MySQLPassword:="ConnectorPassword";
   MySQLDefaultDatabase:="testdb";
   MySQLHost:="mysql.intranet";
   Ret:=@MySQLConnect(MySQLh;MySQLHost;MySQLUser;MySQLPassword;MySQLDefaultDatabase);
   
   IF(@IsError(Ret)){
      @LogReport(Ret);
   }ELSE{
      MySQLError:=0;}
   
   IF(!MySQLError){
      QueryStr:="SELECT ID,Name,Amount,UID FROM testdb.amounts WHERE Name=\"Test User\";";
      Ret:=@MySQLQuery(MySQLh;QueryStr;MySQLResH);
      NumRows:=@MySQLGetNumRows(MySQLResH);
      IF(NumRows=1){
         Ret:=@MySQLFetchRow(MySQLResH;1;ThisQueryID;ThisQueryName;ThisQueryAmount;ThisQueryUID);
      }ELSE{
         ThisQueryID:=-1;
         ThisQueryAmount:=0;
         ThisQueryName:=ThisQueryUID:="";
      }
      MySQLResH:=@MySQLFreeResult(MySQLResH);
      @LogReport("ThisQueryID :"+@Text(ThisQueryID);3);
      @LogReport("ThisQueryName :"+ThisQueryName;3);
      @LogReport("ThisQueryAmount:"+@Text(ThisQueryAmount);3);
      @LogReport("ThisQueryUID :"+ThisQueryUID;3);
   }
   
   MySQLh:=@MySQLClose(MySQLh);
}
@MySQLThreadEnd;

MySQL DB für dieses Beispiel:
CREATE DATABASE testdb
CHARACTER SET latin1 COLLATE latin1_german1_ci;

CREATE TABLE testdb.amount (
`ID` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
`Name` VARCHAR(30),
`Amount` FLOAT,
`UID` VARCHAR(32),
`ModTime` DATETIME,
PRIMARY KEY(`ID`),
INDEX `Name` USING BTREE (`Name`),
INDEX `UID` USING BTREE (`UID`)
)
ENGINE = MYISAM
CHARACTER SET latin1 COLLATE latin1_german1_ci;

INSERT INTO testdb.amount (Name,Amount,UID,ModTime) VALUES ("Test User",123.45,"1234567890ABCDEFABCD1234567890AB",NOW());

Ausgabe im APILOG für dieses Beispiel:
NumRows:1
ThisQueryID :1
ThisQueryName :Test User
ThisQueryAmount:123.45
ThisQueryUID :1234567890ABCDEFABCD1234567890AB

Eine MySQL-Verbindung wird etabliert und ein Query abgesetzt, anschließend wird das Ergebnis im APILOG ausgegeben.