slayerz Posted April 25, 2010 Share Posted April 25, 2010 (edited) Thanks, I will try to modify it to suit my needs Regards :EDIT @ProgAndy Its done! MySQL_Ping($MySQLConn) does the trick. Using Adlib, I can call MySQL_Ping() every 5 minutes to check the server. I'm so glad it can be done... Edited April 25, 2010 by slayerz AUTOIT[sup] I'm lovin' it![/sup] Link to comment Share on other sites More sharing options...
konani Posted May 1, 2010 Share Posted May 1, 2010 MySQL UDFs using libmysql.dll functions: most functions from MySQL API all are prefixed with an underscore: _MySql... e.g.: _MySQL_Real_Query( sometimes parameters are chaged - read function descriptions in include file MySQL.au3 not included: I included a fallback-libmysql.dll: yoou can include libMySQLDLL.au3 and set $Use_EmbeddedDLL=True when calling _MySQL_InitLibrary an example for XAMPP / cdcol is also included in ZIP. expandcollapse popup#cs ---------------------------------------------------------------------------- AutoIt Version: 3.2.8.1 (beta) Author: Prog@ndy Script Function: MySQL-Plugin Demo Script #ce ---------------------------------------------------------------------------- #include <array.au3> #include "mysql.au3" ; MYSQL starten, DLL im PATH (enthält auch @ScriptDir), sont Pfad zur DLL angeben. DLL muss libmysql.dll heißen. _MySQL_InitLibrary() If @error Then Exit MsgBox(0, '', "could nit init MySQL") MsgBox(0, "DLL Version:",_MySQL_Get_Client_Version()&@CRLF& _MySQL_Get_Client_Info()) $MysqlConn = _MySQL_Init() ;Fehler Demo: MsgBox(0,"Error-demo","Error-Demo") $connected = _MySQL_Real_Connect($MysqlConn,"localhostdfdf","droot","","cdcol") If $connected = 0 Then $errno = _MySQL_errno($MysqlConn) MsgBox(0,"Error:",$errno & @LF & _MySQL_error($MysqlConn)) If $errno = $CR_UNKNOWN_HOST Then MsgBox(0,"Error:","$CR_UNKNOWN_HOST" & @LF & $CR_UNKNOWN_HOST) Endif ; XAMPP cdcol MsgBox(0, "XAMPP-Cdcol-demo", "XAMPP-Cdcol-demo") $connected = _MySQL_Real_Connect($MysqlConn, "localhost", "root", "", "cdcol") If $connected = 0 Then Exit MsgBox(16, 'Connection Error', _MySQL_Error($MysqlConn)) $query = "SELECT * FROM cds" $mysql_bool = _MySQL_Real_Query($MysqlConn, $query) If $mysql_bool = $MYSQL_SUCCESS Then MsgBox(0, '', "Query OK") Else $errno = _MySQL_errno($MysqlConn) MsgBox(0,"Error:",$errno & @LF & _MySQL_error($MysqlConn)) EndIf $res = _MySQL_Store_Result($MysqlConn) $fields = _MySQL_Num_Fields($res) $rows = _MySQL_Num_Rows($res) MsgBox(0, "", $rows & "-" & $fields) ; Access2 1 MsgBox(0, '', "Access method 1- manual") Dim $array[$rows][$fields] For $k = 1 To $rows $mysqlrow = _MySQL_Fetch_Row($res,$fields) $lenthsStruct = _MySQL_Fetch_Lengths($res) For $i = 1 To $fields $length = DllStructGetData($lenthsStruct, 1, $i) $fieldPtr = DllStructGetData($mysqlrow, 1, $i) $data = DllStructGetData(DllStructCreate("char[" & $length & "]", $fieldPtr), 1) $array[$k - 1][$i - 1] = $data Next Next _ArrayDisplay($array) ; Access 2 MsgBox(0, '', "Access method 2 - row for row") _MySQL_Data_Seek($res, 0) ; just reset the pointer to the beginning of the result set Do $row1 = _MySQL_Fetch_Row_StringArray($res) If @error Then ExitLoop _ArrayDisplay($row1) Until @error ; Access 3 MsgBox(0, '', "Access method 3 - read whole result in 2D-Array") $array = _MySQL_Fetch_Result_StringArray($res) _ArrayDisplay($array) ; fieldinfomation MsgBox(0, '', "Access fieldinformation") Dim $arFields[$fields][3] For $i = 0 To $fields - 1 $field = _MySQL_Fetch_Field_Direct($res, $i) $arFields[$i][0] = _MySQL_Field_ReadValue($field, "name") $arFields[$i][1] = _MySQL_Field_ReadValue($field, "table") $arFields[$i][2] = _MySQL_Field_ReadValue($field, "db") Next _ArrayDisplay($arFields) ; free result _MySQL_Free_Result($res) ; Close connection _MySQL_Close($MysqlConn) ; exit MYSQL _MySQL_EndLibrary() MySQL UDf Downloads: //Edit: updated DL-Link Download link is broken. Please reupload this UDF Link to comment Share on other sites More sharing options...
ProgAndy Posted May 1, 2010 Author Share Posted May 1, 2010 (edited) I know. The server is currently down. Here is a mirror. Edited May 1, 2010 by ProgAndy *GERMAN* [note: you are not allowed to remove author / modified info from my UDFs]My UDFs:[_SetImageBinaryToCtrl] [_TaskDialog] [AutoItObject] [Animated GIF (GDI+)] [ClipPut for Image] [FreeImage] [GDI32 UDFs] [GDIPlus Progressbar] [Hotkey-Selector] [Multiline Inputbox] [MySQL without ODBC] [RichEdit UDFs] [SpeechAPI Example] [WinHTTP]UDFs included in AutoIt: FTP_Ex (as FTPEx), _WinAPI_SetLayeredWindowAttributes Link to comment Share on other sites More sharing options...
meisandy Posted May 20, 2010 Share Posted May 20, 2010 Is it meant to stop me from using GUI controls/functions? I can only use a MsgBox, and when I try to use GUICreate & GUICtrlCreateLabel nothing comes up (Not even a MsgBox) ? This is really annoying because if this is the case I will be left helpless, as I need theese for my main part! Link to comment Share on other sites More sharing options...
ProgAndy Posted May 21, 2010 Author Share Posted May 21, 2010 Is it meant to stop me from using GUI controls/functions?I can only use a MsgBox, and when I try to use GUICreate & GUICtrlCreateLabel nothing comes up (Not even a MsgBox)?This is really annoying because if this is the case I will be left helpless, as I need theese for my main part!This UDF should not interfere with other functions. You must have some errors in your code. *GERMAN* [note: you are not allowed to remove author / modified info from my UDFs]My UDFs:[_SetImageBinaryToCtrl] [_TaskDialog] [AutoItObject] [Animated GIF (GDI+)] [ClipPut for Image] [FreeImage] [GDI32 UDFs] [GDIPlus Progressbar] [Hotkey-Selector] [Multiline Inputbox] [MySQL without ODBC] [RichEdit UDFs] [SpeechAPI Example] [WinHTTP]UDFs included in AutoIt: FTP_Ex (as FTPEx), _WinAPI_SetLayeredWindowAttributes Link to comment Share on other sites More sharing options...
ProgAndy Posted May 21, 2010 Author Share Posted May 21, 2010 (edited) Just added a download link for the x64-dll which is needed for usage on Windows x64. I am not able to test whether it functions properly since I have no suitable OS. Edit: the dll must always be named libmysql.dll, I'll have to modfy the udf to change this. Edited May 21, 2010 by ProgAndy *GERMAN* [note: you are not allowed to remove author / modified info from my UDFs]My UDFs:[_SetImageBinaryToCtrl] [_TaskDialog] [AutoItObject] [Animated GIF (GDI+)] [ClipPut for Image] [FreeImage] [GDI32 UDFs] [GDIPlus Progressbar] [Hotkey-Selector] [Multiline Inputbox] [MySQL without ODBC] [RichEdit UDFs] [SpeechAPI Example] [WinHTTP]UDFs included in AutoIt: FTP_Ex (as FTPEx), _WinAPI_SetLayeredWindowAttributes Link to comment Share on other sites More sharing options...
konani Posted May 23, 2010 Share Posted May 23, 2010 (edited) Hi ProgAndy, I used your MySQL UDF working on XML (HTML) data field, it works wrong. You can test this data which is one field of record: expandcollapse popup<?xml version="1.0" encoding="utf-8"?> <document> <title>Poor and Poverty; Wealthy and Wealth</title> <subhead></subhead> <navigation>Confusing Words Vocabulary</navigation> <content> <![CDATA[ <div class="content"> <p> </P> <p> When someone does not have money we can say they are <span class="style5"> poor </SPAN> . It is an adjective. <br /> <span class="style3"> "A poor man." </SPAN> </P> <p> The noun form of poor is <span class="style1"> <strong> poverty </STRONG> </SPAN> . <br /> <span class="style3"> "Many people in the world still live in poverty." </SPAN> </P> <p> The comparative form is <span class="style5"> poorer </SPAN> , not more poor. <br /> <span class="style3"> "I am poorer than David." </SPAN> </P> <p> The superlative form is <span class="style5"> poorest </SPAN> . <br /> <span class="style3"> "The poorest countries are in Africa." </SPAN> </P> <p> You may know that the opposite of poor is rich, yet we can also use <span class="style1"> <strong> wealthy </STRONG> </SPAN> as an opposite of poor. <br /> <span class="style3"> "Only very wealthy people can afford to eat here." </SPAN> </P> <p> The noun form of wealthy is <span class="style5"> wealth </SPAN> . <br /> <span class="style3"> "Over her career, she accumulated a great amount of wealth." </SPAN> </P> <p> The comparative form is <span class="style5"> wealthier </SPAN> , not more wealthy. <br /> <span class="style3"> "I am wealthier now than I was 5 years ago." </SPAN> </P> <p> The superlative form is <span class="style5"> wealthiest </SPAN> . <br /> <span class="style3"> "Is Bill Gates the wealthiest person in the world?" </SPAN> </P> <p> </P> <ul id="exerciseanswers"> <li id='0lianswer'> <strong> 1 - Governments are working toward ending world ___. </STRONG> <br /> <span class='answer' id='0answerspan'> </SPAN> <div class='mcanswers'> <input type="hidden" name="0canswer" id="0canswer" /> <label> <input onclick="document.getElementById('0canswer').value = this.value;" type="radio" name="0radio" id="00radio" value="poorer" /> poorer </LABEL> <br /> <label> <input onclick="document.getElementById('0canswer').value = this.value;" type="radio" name="0radio" id="01radio" value="poverty" /> poverty </LABEL> <br /> <label> <input onclick="document.getElementById('0canswer').value = this.value;" type="radio" name="0radio" id="02radio" value="poor" /> poor </LABEL> <br /> <br /> </DIV> </LI> <li id='1lianswer'> <strong> 2 - What is the ___ country in the world? </STRONG> <br /> <span class='answer' id='1answerspan'> </SPAN> <div class='mcanswers'> <input type="hidden" name="1canswer" id="1canswer" /> <label> <input onclick="document.getElementById('1canswer').value = this.value;" type="radio" name="1radio" id="10radio" value="poorest" /> poorest </LABEL> <br /> <label> <input onclick="document.getElementById('1canswer').value = this.value;" type="radio" name="1radio" id="11radio" value="poverty" /> poverty </LABEL> <br /> <label> <input onclick="document.getElementById('1canswer').value = this.value;" type="radio" name="1radio" id="12radio" value="poor" /> poor </LABEL> <br /> <label> <input onclick="document.getElementById('1canswer').value = this.value;" type="radio" name="1radio" id="13radio" value="poorer" /> poorer </LABEL> <br /> <br /> </DIV> </LI> <li id='2lianswer'> <strong> 3 - I come from a ___ family. </STRONG> <br /> <span class='answer' id='2answerspan'> </SPAN> <div class='mcanswers'> <input type="hidden" name="2canswer" id="2canswer" /> <label> <input onclick="document.getElementById('2canswer').value = this.value;" type="radio" name="2radio" id="20radio" value="poorest" /> poorest </LABEL> <br /> <label> <input onclick="document.getElementById('2canswer').value = this.value;" type="radio" name="2radio" id="21radio" value="poor" /> poor </LABEL> <br /> <label> <input onclick="document.getElementById('2canswer').value = this.value;" type="radio" name="2radio" id="22radio" value="poverty" /> poverty </LABEL> <br /> <br /> </DIV> </LI> <li id='3lianswer'> <strong> 4 - Are people today ___ than they were in the past? </STRONG> <br /> <span class='answer' id='3answerspan'> </SPAN> <div class='mcanswers'> <input type="hidden" name="3canswer" id="3canswer" /> <label> <input onclick="document.getElementById('3canswer').value = this.value;" type="radio" name="3radio" id="30radio" value="poorest" /> poorest </LABEL> <br /> <label> <input onclick="document.getElementById('3canswer').value = this.value;" type="radio" name="3radio" id="31radio" value="poor" /> poor </LABEL> <br /> <label> <input onclick="document.getElementById('3canswer').value = this.value;" type="radio" name="3radio" id="32radio" value="poorer" /> poorer </LABEL> <br /> <br /> </DIV> </LI> <li id='4lianswer'> <strong> 5 - She dreams of being ___. </STRONG> <br /> <span class='answer' id='4answerspan'> </SPAN> <div class='mcanswers'> <input type="hidden" name="4canswer" id="4canswer" /> <label> <input onclick="document.getElementById('4canswer').value = this.value;" type="radio" name="4radio" id="40radio" value="wealthy" /> wealthy </LABEL> <br /> <label> <input onclick="document.getElementById('4canswer').value = this.value;" type="radio" name="4radio" id="41radio" value="wealth" /> wealth </LABEL> <br /> <br /> </DIV> </LI> <li id='5lianswer'> <strong> 6 - Russia has a lot of mineral ___. </STRONG> <br /> <span class='answer' id='5answerspan'> </SPAN> <div class='mcanswers'> <input type="hidden" name="5canswer" id="5canswer" /> <label> <input onclick="document.getElementById('5canswer').value = this.value;" type="radio" name="5radio" id="50radio" value="wealthy" /> wealthy </LABEL> <br /> <label> <input onclick="document.getElementById('5canswer').value = this.value;" type="radio" name="5radio" id="51radio" value="wealth" /> wealth </LABEL> <br /> <br /> </DIV> </LI> <li id='6lianswer'> <strong> 7 - Who is the ___ person you know? </STRONG> <br /> <span class='answer' id='6answerspan'> </SPAN> <div class='mcanswers'> <input type="hidden" name="6canswer" id="6canswer" /> <label> <input onclick="document.getElementById('6canswer').value = this.value;" type="radio" name="6radio" id="60radio" value="wealthier" /> wealthier </LABEL> <br /> <label> <input onclick="document.getElementById('6canswer').value = this.value;" type="radio" name="6radio" id="61radio" value="wealthiest" /> wealthiest </LABEL> <br /> <br /> </DIV> </LI> <li id='7lianswer'> <strong> 8 - She's much ___ than me. </STRONG> <br /> <span class='answer' id='7answerspan'> </SPAN> <div class='mcanswers'> <input type="hidden" name="7canswer" id="7canswer" /> <label> <input onclick="document.getElementById('7canswer').value = this.value;" type="radio" name="7radio" id="70radio" value="wealthiest" /> wealthiest </LABEL> <br /> <label> <input onclick="document.getElementById('7canswer').value = this.value;" type="radio" name="7radio" id="71radio" value="wealthier" /> wealthier </LABEL> <br /> <br /> </DIV> </LI> </UL> <script type="text/javascript"> function checkanswers(){ if(document.getElementById('0canswer').value.toLowerCase().replace(/'/, ''') == 'poverty'){document.getElementById('0answerspan').innerHTML = 'Correct!';document.getElementById('0lianswer').className = 'correct';}else{document.getElementById('0answerspan').innerHTML = 'Wrong!';document.getElementById('0lianswer').className = 'wrong';}if(document.getElementById('1canswer').value.toLowerCase().replace(/'/, ''') == 'poorest'){document.getElementById('1answerspan').innerHTML = 'Correct!';document.getElementById('1lianswer').className = 'correct';}else{document.getElementById('1answerspan').innerHTML = 'Wrong!';document.getElementById('1lianswer').className = 'wrong';}if(document.getElementById('2canswer').value.toLowerCase().replace(/'/, ''') == 'poor'){document.getElementById('2answerspan').innerHTML = 'Correct!';document.getElementById('2lianswer').className = 'correct';}else{document.getElementById('2answerspan').innerHTML = 'Wrong!';document.getElementById('2lianswer').className = 'wrong';}if(document.getElementById('3canswer').value.toLowerCase().replace(/'/, ''') == 'poorer'){document.getElementById('3answerspan').innerHTML = 'Correct!';document.getElementById('3lianswer').className = 'correct';}else{document.getElementById('3answerspan').innerHTML = 'Wrong!';document.getElementById('3lianswer').className = 'wrong';}if(document.getElementById('4canswer').value.toLowerCase().replace(/'/, ''') == 'wealthy'){document.getElementById('4answerspan').innerHTML = 'Correct!';document.getElementById('4lianswer').className = 'correct';}else{document.getElementById('4answerspan').innerHTML = 'Wrong!';document.getElementById('4lianswer').className = 'wrong';}if(document.getElementById('5canswer').value.toLowerCase().replace(/'/, ''') == 'wealth'){document.getElementById('5answerspan').innerHTML = 'Correct!';document.getElementById('5lianswer').className = 'correct';}else{document.getElementById('5answerspan').innerHTML = 'Wrong!';document.getElementById('5lianswer').className = 'wrong';}if(document.getElementById('6canswer').value.toLowerCase().replace(/'/, ''') == 'wealthiest'){document.getElementById('6answerspan').innerHTML = 'Correct!';document.getElementById('6lianswer').className = 'correct';}else{document.getElementById('6answerspan').innerHTML = 'Wrong!';document.getElementById('6lianswer').className = 'wrong';}if(document.getElementById('7canswer').value.toLowerCase().replace(/'/, ''') == 'wealthier'){document.getElementById('7answerspan').innerHTML = 'Correct!';document.getElementById('7lianswer').className = 'correct';}else{document.getElementById('7answerspan').innerHTML = 'Wrong!';document.getElementById('7lianswer').className = 'wrong';}} </SCRIPT> <br /> <br /> <input name="Check_Answers" type="button" onclick="checkanswers();" value="Check Answers" /> <br /> <br /> </DIV>]]> </content> <comment> <![CDATA[ <div class="content"> <p> It is easy, especially with such brilliant explanation!!!! <IMG src="http://www.ecenglish.com/learnenglish/modules/smileys/packs/Yahoo!/clap.gif" title="Applause" alt="Applause"> <br /> Thank you for the Lesson! <IMG src="http://www.ecenglish.com/learnenglish/modules/smileys/packs/Yahoo!/smile.gif" title="Smile" alt="Smile"> </P> </DIV>]]> </comment> <comment> <![CDATA[ <div class="content"> <p> Also it's a good point to know that "wealth" is uncountable noun. <br /> e.g. "a great amount of wealth" </P> </DIV>]]> </comment> <comment> <![CDATA[ <div class="content"> <p> It is a very easy lesson, as for me. But it's very interesting. </P> </DIV>]]> </comment> <comment> <![CDATA[ <div class="content"> <p> easy exercise..nice only this sexercise i got full <IMG src="http://www.ecenglish.com/learnenglish/modules/smileys/packs/Yahoo!/whew.gif" title="Whew!" alt="Whew!"> </P> </DIV>]]> </comment> <src><![CDATA[http://www.ecenglish.com/learnenglish/lessons/poor-and-poverty-wealth-and-wealthy]]></src> </document> Other tested data: http://www.mediafire.com/?njfzzvdt0oj . It clearly see that some data don't load. Can you fix this problem? I hope so, I need your UDF working on XML data. Edited May 28, 2010 by SmOke_N Link to comment Share on other sites More sharing options...
ProgAndy Posted May 28, 2010 Author Share Posted May 28, 2010 (edited) New version with a bugfix in _MySQL_Fetch_Fields_Names. Download in first post. Edit: This error had also effects on some other functions using this function internally, so update Edited May 28, 2010 by ProgAndy *GERMAN* [note: you are not allowed to remove author / modified info from my UDFs]My UDFs:[_SetImageBinaryToCtrl] [_TaskDialog] [AutoItObject] [Animated GIF (GDI+)] [ClipPut for Image] [FreeImage] [GDI32 UDFs] [GDIPlus Progressbar] [Hotkey-Selector] [Multiline Inputbox] [MySQL without ODBC] [RichEdit UDFs] [SpeechAPI Example] [WinHTTP]UDFs included in AutoIt: FTP_Ex (as FTPEx), _WinAPI_SetLayeredWindowAttributes Link to comment Share on other sites More sharing options...
ProgAndy Posted May 28, 2010 Author Share Posted May 28, 2010 Hi ProgAndy,I used your MySQL UDF working on XML (HTML) data field, it works wrong.You can test this data which is one field of record:Other tested data: http://www.mediafire.com/?njfzzvdt0oj . It clearly see that some data don't load.Can you fix this problem? I hope so, I need your UDF working on XML data.I Can't see any problem. _ArrayDisplay doesn't display everything, but the data itself is fine. Just try MsgBoxes *GERMAN* [note: you are not allowed to remove author / modified info from my UDFs]My UDFs:[_SetImageBinaryToCtrl] [_TaskDialog] [AutoItObject] [Animated GIF (GDI+)] [ClipPut for Image] [FreeImage] [GDI32 UDFs] [GDIPlus Progressbar] [Hotkey-Selector] [Multiline Inputbox] [MySQL without ODBC] [RichEdit UDFs] [SpeechAPI Example] [WinHTTP]UDFs included in AutoIt: FTP_Ex (as FTPEx), _WinAPI_SetLayeredWindowAttributes Link to comment Share on other sites More sharing options...
Bonchen Posted June 8, 2010 Share Posted June 8, 2010 (edited) Hi! I'm really new at this and I need some help translating a php-code, if it's possible. $q = "SELECT id, name, kat FROM prod WHERE kat = '$kat' ORDER BY 'name'"; $r = mysql_query($q); while (list($id, $name, $kat) = mysql_fetch_array($r)) { ;---code here } I would really appreciate if someone could look into this. Edited June 8, 2010 by Bonchen Link to comment Share on other sites More sharing options...
ProgAndy Posted June 9, 2010 Author Share Posted June 9, 2010 (edited) OK, I'll do it since this could help othres to understand the function better, too: _MySQL_InitLibrary() OnAutoItExitRegister("_FreeResources") Func _FreeResources() _MySQL_EndLibrary() EndFunc $hMySQL = _MySQL_Init() If _MySQL_Real_Connect($hMySQL, "Server.address", "username", "password", "database") Then $kat = _MySQL_Real_Escape_String($hMySQL, $kat) If $MYSQL_SUCCESS = _MySQL_Real_Query($hMySQL, "SELECT id, name, kat FROM prod WHERE kat = '"&$kat&"' ORDER BY 'name'") Then $hResult = _MySQL_Store_Result($hMySQL) If $hResult Then $iFields = _MySQL_Num_Fields($hResult) While $iFields>0 $asRow = _MySQL_Fetch_Row_StringArray($hResult, $iFields) If @error Then ExitLoop $id = $asRow[0] $name = $asRow[1] $kat = $asRow[2] MsgBox(0, "" $id & @CRLF & $name & @CRLF & $kat) WEnd _MySQL_Free_Result($hResult) EndIf EndIf EndIf _MySQL_Close($hMySQL) Edited June 9, 2010 by ProgAndy *GERMAN* [note: you are not allowed to remove author / modified info from my UDFs]My UDFs:[_SetImageBinaryToCtrl] [_TaskDialog] [AutoItObject] [Animated GIF (GDI+)] [ClipPut for Image] [FreeImage] [GDI32 UDFs] [GDIPlus Progressbar] [Hotkey-Selector] [Multiline Inputbox] [MySQL without ODBC] [RichEdit UDFs] [SpeechAPI Example] [WinHTTP]UDFs included in AutoIt: FTP_Ex (as FTPEx), _WinAPI_SetLayeredWindowAttributes Link to comment Share on other sites More sharing options...
Bonchen Posted June 9, 2010 Share Posted June 9, 2010 OK, I'll do it since this could help othres to understand the function better, too: _MySQL_InitLibrary() OnAutoItExitRegister("_FreeResources") Func _FreeResources() _MySQL_EndLibrary() EndFunc $hMySQL = _MySQL_Init() If _MySQL_Real_Connect($hMySQL, "Server.address", "username", "password", "database") Then $kat = _MySQL_Real_Escape_String($hMySQL, $kat) If $MYSQL_SUCCESS = _MySQL_Real_Query($hMySQL, "SELECT id, name, kat FROM prod WHERE kat = '"&$kat&"' ORDER BY 'name'") Then $hResult = _MySQL_Store_Result($hMySQL) If $hResult Then $iFields = _MySQL_Num_Fields($hResult) While $iFields>0 $asRow = _MySQL_Fetch_Row_StringArray($hResult, $iFields) If @error Then ExitLoop $id = $asRow[0] $name = $asRow[1] $kat = $asRow[2] MsgBox(0, "" $id & @CRLF & $name & @CRLF & $kat) WEnd _MySQL_Free_Result($hResult) EndIf EndIf EndIf _MySQL_Close($hMySQL) You're an angel! Thank you. Link to comment Share on other sites More sharing options...
ProgAndy Posted June 18, 2010 Author Share Posted June 18, 2010 There was an error on last upload of the zip-file, so the x64-version wasn't availbale. Please download the library again. *GERMAN* [note: you are not allowed to remove author / modified info from my UDFs]My UDFs:[_SetImageBinaryToCtrl] [_TaskDialog] [AutoItObject] [Animated GIF (GDI+)] [ClipPut for Image] [FreeImage] [GDI32 UDFs] [GDIPlus Progressbar] [Hotkey-Selector] [Multiline Inputbox] [MySQL without ODBC] [RichEdit UDFs] [SpeechAPI Example] [WinHTTP]UDFs included in AutoIt: FTP_Ex (as FTPEx), _WinAPI_SetLayeredWindowAttributes Link to comment Share on other sites More sharing options...
autoall Posted June 30, 2010 Share Posted June 30, 2010 OK, I'll do it since this could help othres to understand the function better, too: _MySQL_InitLibrary() OnAutoItExitRegister("_FreeResources") Func _FreeResources() _MySQL_EndLibrary() EndFunc $hMySQL = _MySQL_Init() If _MySQL_Real_Connect($hMySQL, "Server.address", "username", "password", "database") Then $kat = _MySQL_Real_Escape_String($hMySQL, $kat) If $MYSQL_SUCCESS = _MySQL_Real_Query($hMySQL, "SELECT id, name, kat FROM prod WHERE kat = '"&$kat&"' ORDER BY 'name'") Then $hResult = _MySQL_Store_Result($hMySQL) If $hResult Then $iFields = _MySQL_Num_Fields($hResult) While $iFields>0 $asRow = _MySQL_Fetch_Row_StringArray($hResult, $iFields) If @error Then ExitLoop $id = $asRow[0] $name = $asRow[1] $kat = $asRow[2] MsgBox(0, "" $id & @CRLF & $name & @CRLF & $kat) WEnd _MySQL_Free_Result($hResult) EndIf EndIf EndIf _MySQL_Close($hMySQL) thanks that really helped Link to comment Share on other sites More sharing options...
Sn3akyP3t3 Posted February 14, 2011 Share Posted February 14, 2011 (edited) OK, I'll do it since this could help othres to understand the function better, too: _MySQL_InitLibrary() OnAutoItExitRegister("_FreeResources") Func _FreeResources() _MySQL_EndLibrary() EndFunc $hMySQL = _MySQL_Init() If _MySQL_Real_Connect($hMySQL, "Server.address", "username", "password", "database") Then $kat = _MySQL_Real_Escape_String($hMySQL, $kat) If $MYSQL_SUCCESS = _MySQL_Real_Query($hMySQL, "SELECT id, name, kat FROM prod WHERE kat = '"&$kat&"' ORDER BY 'name'") Then $hResult = _MySQL_Store_Result($hMySQL) If $hResult Then $iFields = _MySQL_Num_Fields($hResult) While $iFields>0 $asRow = _MySQL_Fetch_Row_StringArray($hResult, $iFields) If @error Then ExitLoop $id = $asRow[0] $name = $asRow[1] $kat = $asRow[2] MsgBox(0, "" $id & @CRLF & $name & @CRLF & $kat) WEnd _MySQL_Free_Result($hResult) EndIf EndIf EndIf _MySQL_Close($hMySQL) I really love this UDF and praise ProgAndy for maintaining support. I'm not here to complain, just find a better way of doing things. Particularly with error handling with this UDF. @ProgAndy or anyone with enough experience with this UDF, is there a better way of escaping the while loop than simply "If @error Then ExitLoop"? Better yet, is there any documentation or manual for this UDF that explains the behavior that has my answer within? This method of error detection works, but really doesn't allow for robust error handling or maintaining data flow after an unexpected error occurrence. I know if I want robust one could argue that I should have selected a different language or code, so please omit comments regarding that for now. I just enjoy using AutoIt for many daily tasks. Update: I've found the function _MySQL_Fetch_Row_StringArray() inside of the MySql.au3 file. The behavior seems to be to set @error = 1 when no more rows exist as well as setting the $array return value as zero. I suppose this is sufficient and I just need to stop whining and get used to it! I think I've been spoiled by the Sqlite method of escaping a while loop which is to get a return value to compare to a constant like so: While _SQLite_FetchData($hQuery, $aRow) = $SQLITE_OK ; Do stuff with the data msgbox(0,"","Fresh from the HDD " & $aRow[1] & ". With a side order of " & $aRow[1] & ".") WEnd Update2: I've found another method that satisfies exiting the loop independent of the value of @error: $asRow = _MySQL_Fetch_Row_StringArray($hResult, $iFields) ; Substitute this where line "If @error Then ExitLoop once was If IsArray($asRow) Then ; Do your thing Else ; The great escape ExitLoop EndIf Edit: Cleared up comment to relieve confusion Not saying that is the better way of doing things. In fact I'm asking for someone to knock me logically silly if I'm wrong. Update 3: I found functional way to detect errors on the query and even for the connection, but still not sure about the best way to exit out the while loop when iterating through the rows. Error handling on the query: If $MYSQL_SUCCESS = _MySQL_Real_Query($hMySQL, "SELECT This, That FROM alittleofeverything WHERE This='this' AND That='that'") Then ; Do stuff Else ; Raise error handling, in this case just a message MsgBox(0,"","Error Number: " & _MySQL_errno($hMySqlConnection) & @CRLF & "Error Message: " & _MySQL_Error($hMySqlConnection)) EndIf Edited March 11, 2011 by Sn3akyP3t3 Link to comment Share on other sites More sharing options...
willichan Posted April 11, 2011 Share Posted April 11, 2011 I have tried all of the links in this topic. I was not able to download the UDF from any of them. Is there a new location? @ProgAndy, If you need a place to host the UDF, let me know. I would be happy to host this one on my server. My UDFs: Barcode Libraries, Automate creation of any type of project folder, File Locking with Cooperative Semaphores, Inline binary files, Continue script after reboot, WinWaitMulti, Name Aggregator, Enigma, CornedBeef Hash  Link to comment Share on other sites More sharing options...
ProgAndy Posted April 12, 2011 Author Share Posted April 12, 2011 (edited) @willichan: Please read my signature. The download is currently here: --- Edit: Domain is back. Edited April 13, 2011 by ProgAndy *GERMAN* [note: you are not allowed to remove author / modified info from my UDFs]My UDFs:[_SetImageBinaryToCtrl] [_TaskDialog] [AutoItObject] [Animated GIF (GDI+)] [ClipPut for Image] [FreeImage] [GDI32 UDFs] [GDIPlus Progressbar] [Hotkey-Selector] [Multiline Inputbox] [MySQL without ODBC] [RichEdit UDFs] [SpeechAPI Example] [WinHTTP]UDFs included in AutoIt: FTP_Ex (as FTPEx), _WinAPI_SetLayeredWindowAttributes Link to comment Share on other sites More sharing options...
willichan Posted April 12, 2011 Share Posted April 12, 2011 @willichan: Please read my signature. The download is currently here: http://www.progandy.tchost.de/downloads/view.download/3/4Sorry. I missed that. Got the file. Thanks for a great UDF. My UDFs: Barcode Libraries, Automate creation of any type of project folder, File Locking with Cooperative Semaphores, Inline binary files, Continue script after reboot, WinWaitMulti, Name Aggregator, Enigma, CornedBeef Hash  Link to comment Share on other sites More sharing options...
Clark Posted May 9, 2011 Share Posted May 9, 2011 HI all My code is failing on the InitLibrary statement. I notice when looking in the include file that it attempts to check the client version. Am I to assume that this script must run on the same server as the MySQL database is running on? (i.e. it won't work across the network?) TIA Clark Link to comment Share on other sites More sharing options...
Manic Posted June 30, 2011 Share Posted June 30, 2011 HI allMy code is failing on the InitLibrary statement.Same thing for me. I can't even get the library loaded, let alone make any MySQL Queries. I extracted the files from your download into the includes folder, and have been trying to initialize the library. But all I get is errors. I would great appreciate any kind of help from anyone on this topic. I'm desperate to have MySQL with AutoIt! Manic Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now