Advertisement
Maddin

Easy-SQL Include by Maddin

Apr 10th, 2011
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 32.09 KB | None | 0 0
  1. /*
  2. <-+-------------------------------+->
  3. <-+ Easy MySQL-Sytem              +->
  4. <-+                               +->
  5. <-+ @Author:    Maddin            +->
  6. <-+ @Version:   1.2               +->
  7. <-+ @Released:  10/04/2011        +->
  8. <-+                               +->
  9. <-+-------------------------------+->
  10.  
  11. ACHTUNG: Wenn keine bestimmte Verbindung angegeben wird, wird automatisch die erste verbindung verwendet!
  12.  
  13. <-+-------------------------------[Funktionen]-------------------------------+->
  14.     native eSQL_Connect_To_DB();
  15.     native eSQL_Close_Connection(connectionHandle = 1);
  16.     native eSQL_Check_Connection(connectionHandle = 1);
  17.     native eSQL_CheckAccount(playername[], connectionHandle = 1);
  18.     native eSQL_CreateAccount(playername[], pass[], hash = 0, connectionHandle = 1);
  19.     native eSQL_ReturnPasswort(playername[], connectionHandle = 1);
  20.     native eSQL_ChangePasswort(playername[], pass[], hash = 0, connectionHandle = 1);
  21.     native eSQL_GetMaxInt(Field[], Table[], connectionHandle = 1);
  22.     native eSQL_GetMaxFloat(Field[], Table[], connectionHandle = 1);
  23.     native Float:eSQL_GetFloat(Table[], Field[], Where[], Is[], connectionHandle = 1);
  24.     native eSQL_GetString(Table[], Field[], Where[], Is[], connectionHandle = 1);
  25.     native eSQL_GetInt(Table[], Field[], Where[], Is[], connectionHandle = 1);
  26.     native eSQL_SetInt(Table[], Field[], To, Where[], Is[], connectionHandle = 1);
  27.     native eSQL_SetString(Table[], Field[], To[], Where[], Is[], connectionHandle = 1);
  28.     native eSQL_SetFloat(Table[], Field[], Float:To, Where[], Is[], connectionHandle = 1);
  29.     native eSQL_CountDB(Table[], connectionHandle = 1);
  30.     native eSQL_DeleteRow(Table[], Where[], Is[], connectionHandle = 1);
  31.     native eSQL_GetStats(destination[],connectionHandle = 1);
  32.     native eSQL_AddField(Table[], FieldName[], type, Length = 0, Decimals = 0, values[]="", connectionHandle = 1);
  33.     native eSQL_DeleteField(Table[], FieldName[], connectionHandle = 1);
  34. <-+--------------------------------------------------------------------------+->
  35. */
  36. #include <a_samp>
  37. //==================================
  38. #if !defined mysql_included
  39.     #tryinclude <a_mysql>
  40.     #if !defined mysql_included
  41.         #error Please include a_mysql!
  42.     #endif
  43. #endif
  44.  
  45. #if !defined isnull
  46.     #define isnull(%1) \
  47.                 ((!(%1[0])) || (((%1[0]) == '\1') && (!(%1[1]))))
  48. #endif
  49.  
  50. #define eSQL:: eSQL_
  51. //==================================
  52. #define SQL_HOST   "DEINE_MYSQL_IP"
  53. #define SQL_USER   "DEIN_MYSQL_USER_NAME"
  54. #define SQL_PASS   "DEIN_MYSQL_PASSWORT"
  55. #define SQL_DATA   "DEIN_MYSQL_DATENBANK_NAME"
  56. //==================================
  57. #define ACCOUNT_TABLE "Accounts"
  58. #define USERNAME_FIELD "Username"
  59. #define PASSWORD_FIELD "Password"
  60. //==================================
  61. /******************************************************************************
  62. --- eSQL_Connect_To_DB()
  63.  
  64. Versucht eine verbindung zur Datenbank herzustellen.
  65. Wenn nach dem Zweiten versuch keine verbindung hergestellt werden konnte, wird der Server heruntergefahren.
  66.  
  67. Rückgabe: Die ID der gerade aufgebauten verbindung.
  68. ******************************************************************************/
  69. stock eSQL_Connect_To_DB()
  70. {
  71.     new eSQL::cHandle;
  72.     eSQL::cHandle = mysql_connect(SQL_HOST, SQL_USER, SQL_DATA, SQL_PASS);
  73.     if(mysql_ping() == 1) {
  74.         print("<-| [MYSQL] Verbindung zur Datenbank wurde erfolgreich hergestellt!");
  75.         return eSQL::cHandle;
  76.     } else {
  77.         print("<-| [MYSQL] Es konnte keine Verbindung zur Datenbank hergestellt werden!");
  78.         print("<-| [MYSQL] Es wird erneut versucht eine Verbindung zur Datenbank herzustellen!");
  79.         eSQL::cHandle = mysql_connect(SQL_HOST, SQL_USER, SQL_DATA, SQL_PASS);
  80.         if(mysql_ping() == 1) {
  81.             print("<-| [MYSQL] Es konnte im 2 Versuch eine Verbindung hergestellt werden!");
  82.             return eSQL::cHandle;
  83.         } else {
  84.             print("<-| [MYSQL] Es konnte keine Verbindung zur Datenbank hergestellt werden!");
  85.             print("<-| [MYSQL] Der Server wird nun beendet!");
  86.             return SendRconCommand("exit");
  87.         }
  88.     }
  89. }
  90. /******************************************************************************
  91. --- eSQL_Check_Connection(connectionHandle = 1);
  92.  
  93. Überprüft ob die Verbindung noch steht.
  94.  
  95. Rückgabe: Die ID der überprüften verbindung.
  96. ******************************************************************************/
  97. stock eSQL_Check_Connection(connectionHandle = 1)
  98. {
  99.     if(mysql_ping(connectionHandle)) {
  100.         print("<-| [MYSQL] Verbindung zur Datenbank steht noch!");
  101.         return connectionHandle;
  102.     } else {
  103.         print("<-| [MYSQL] Die verbindung zur Datenbank ist nicht mehr gültig.!");
  104.         print("<-| [MYSQL] Es wird erneut versucht eine Verbindung zur Datenbank herzustellen!");
  105.         mysql_reconnect (connectionHandle);
  106.         if(mysql_ping(connectionHandle)) {
  107.             print("<-| [MYSQL] Es konnte eine Verbindung hergestellt werden!");
  108.             return connectionHandle;
  109.         } else {
  110.             mysql_reconnect (connectionHandle);
  111.             if(mysql_ping(connectionHandle)) {
  112.                 print("<-| [MYSQL] Es konnte im 2 Versuch eine Verbindung hergestellt werden!");
  113.                 return connectionHandle;
  114.             } else {
  115.                 print("<-| [MYSQL] Es konnte keine Verbindung zur Datenbank hergestellt werden!");
  116.                 print("<-| [MYSQL] Der Server wird nun beendet!");
  117.                 return SendRconCommand("exit");
  118.             }
  119.         }
  120.     }
  121. }
  122. /******************************************************************************
  123. --- eSQL_CheckAccount(playername[], connectionHandle = 1);
  124.  
  125. Überpüft ob ein Account unter dem Angegebenen Namen existiert.
  126.  
  127. playername[] - Der Name der Überprüft werden soll.
  128.  
  129. Rückgabe: 0 Wenn Account nicht existiert, 1 Wenn er existiert.
  130. ******************************************************************************/
  131. stock eSQL_CheckAccount(playername[], connectionHandle = 1)
  132. {
  133.     new eSQL::Query[512],eSQL::EscapeString[MAX_PLAYER_NAME];
  134.     mysql_real_escape_string(playername,eSQL::EscapeString);
  135.     format(eSQL::Query, 512, "SELECT * FROM %s WHERE %s = '%s'", ACCOUNT_TABLE, USERNAME_FIELD, eSQL::EscapeString);
  136.     mysql_query(eSQL::Query, -1, -1, connectionHandle);
  137.     mysql_store_result(connectionHandle);
  138.     return mysql_num_rows(connectionHandle);
  139. }
  140. /******************************************************************************
  141. --- eSQL_CreateAccount(playername[], pass[], hash = 0, connectionHandle = 1);
  142.  
  143. Erstellt einen Account mit den Angegebenen Parametern.
  144.  
  145.     playername[] - Der Name des Spielers dessen Account erstellt werden soll.
  146.     pass[] - Das Passwort mit dem der Account erstellt werden soll
  147.     hash - Ob das Passwort gehast werden soll, und wie.
  148.             0 = Kein Hash (blankes Passwort)
  149.             1 = MD5 Hash
  150.             2 = SHA1 Hash
  151.             3 = SHA2-224 Hash
  152.             4 = SHA2-256 Hash
  153.             5 = SHA2-384 Hash
  154.             6 = SHA2-512 Hash
  155.  
  156. Rückgabe: 1 wenn erfolgreich, 0 wenn nicht.
  157. ******************************************************************************/
  158. stock eSQL_CreateAccount(playername[], pass[], hash = 0, connectionHandle = 1)
  159. {
  160.     new eSQL::Query[512],eSQL::EscapeString[2][512];
  161.     mysql_real_escape_string(playername,eSQL::EscapeString[0]);
  162.     mysql_real_escape_string(pass,eSQL::EscapeString[1]);
  163.     switch(hash)
  164.     {
  165.         case 0: format(eSQL::Query, 512, "INSERT INTO %s (%s, %s) VALUES ('%s', '%s')", ACCOUNT_TABLE, USERNAME_FIELD, PASSWORD_FIELD, eSQL::EscapeString[0], eSQL::EscapeString[1]);
  166.         case 1: format(eSQL::Query, 512, "INSERT INTO %s (%s, %s) VALUES ('%s', MD5('%s'))", ACCOUNT_TABLE, USERNAME_FIELD, PASSWORD_FIELD, eSQL::EscapeString[0], eSQL::EscapeString[1]);
  167.         case 2: format(eSQL::Query, 512, "INSERT INTO %s (%s, %s) VALUES ('%s', SHA1('%s'))", ACCOUNT_TABLE, USERNAME_FIELD, PASSWORD_FIELD, eSQL::EscapeString[0], eSQL::EscapeString[1]);
  168.         case 3: format(eSQL::Query, 512, "INSERT INTO %s (%s, %s) VALUES ('%s', SHA2('%s', 224))", ACCOUNT_TABLE, USERNAME_FIELD, PASSWORD_FIELD, eSQL::EscapeString[0], eSQL::EscapeString[1]);
  169.         case 4: format(eSQL::Query, 512, "INSERT INTO %s (%s, %s) VALUES ('%s', SHA2('%s', 256))", ACCOUNT_TABLE, USERNAME_FIELD, PASSWORD_FIELD, eSQL::EscapeString[0], eSQL::EscapeString[1]);
  170.         case 5: format(eSQL::Query, 512, "INSERT INTO %s (%s, %s) VALUES ('%s', SHA2('%s', 384))", ACCOUNT_TABLE, USERNAME_FIELD, PASSWORD_FIELD, eSQL::EscapeString[0], eSQL::EscapeString[1]);
  171.         case 6: format(eSQL::Query, 512, "INSERT INTO %s (%s, %s) VALUES ('%s', SHA2('%s', 512))", ACCOUNT_TABLE, USERNAME_FIELD, PASSWORD_FIELD, eSQL::EscapeString[0], eSQL::EscapeString[1]);
  172.     }
  173.     return mysql_query(eSQL::Query, -1, -1, connectionHandle);
  174. }
  175. /******************************************************************************
  176. --- eSQL_ReturnPasswort(playername[], connectionHandle = 1);
  177.  
  178. Gibt das passwort des Angegebenen Spielers zurück.
  179.  
  180.     playername[] - Der name des Spielers dessen Passwort zurück gegeben werden soll.
  181.    
  182. Rückgabe: Das passwort des Spielers.
  183. ******************************************************************************/
  184. stock eSQL_ReturnPasswort(playername[], connectionHandle = 1)
  185. {
  186.     new eSQL::Query[512], eSQL::Get[256], eSQL::EscapeString[MAX_PLAYER_NAME];
  187.     mysql_real_escape_string(playername, eSQL::EscapeString);
  188.     format(eSQL::Query, 512, "SELECT %s FROM %s WHERE %s = '%s'", PASSWORD_FIELD, ACCOUNT_TABLE, USERNAME_FIELD, eSQL::EscapeString);
  189.     mysql_query(eSQL::Query, -1, -1, connectionHandle);
  190.     mysql_store_result(connectionHandle);
  191.     mysql_fetch_row_format(eSQL::Get,"|",connectionHandle);
  192.     mysql_free_result(connectionHandle);
  193.     return eSQL::Get;
  194. }
  195. /******************************************************************************
  196. --- eSQL_ChangePasswort(playername[], pass[], hash = 0, connectionHandle = 1);
  197.  
  198. Ändert das Passwort des angegebenen Spielers.
  199.  
  200.     playername[] - Der Name des Spielers dessen Passwort geändert werden soll.
  201.     hash - Ob das Passwort gehast werden soll, und wie.
  202.             0 = Kein Hash (blankes Passwort)
  203.             1 = MD5 Hash
  204.             2 = SHA1 Hash
  205.             3 = SHA2-224 Hash
  206.             4 = SHA2-256 Hash
  207.             5 = SHA2-384 Hash
  208.             6 = SHA2-512 Hash
  209.  
  210. Rückgabe: 1 wenn erfolgreich, 0 wenn nicht.
  211. ******************************************************************************/
  212. stock eSQL_ChangePasswort(playername[], pass[], hash = 0, connectionHandle = 1)
  213. {
  214.     new eSQL::Query[512],eSQL::EscapeString[2][512];
  215.     mysql_real_escape_string(playername, eSQL::EscapeString[0]);
  216.     mysql_real_escape_string(pass, eSQL::EscapeString[1]);
  217.     switch(hash)
  218.     {
  219.         case 0: format(eSQL::Query, 512, "UPDATE %s SET %s = '%s' WHERE %s = '%s'", ACCOUNT_TABLE, PASSWORD_FIELD, eSQL::EscapeString[1], USERNAME_FIELD, eSQL::EscapeString[0]);
  220.         case 1: format(eSQL::Query, 512, "UPDATE %s SET %s = MD5('%s') WHERE %s = '%s'", ACCOUNT_TABLE, PASSWORD_FIELD, eSQL::EscapeString[1], USERNAME_FIELD, eSQL::EscapeString[0]);
  221.         case 2: format(eSQL::Query, 512, "UPDATE %s SET %s = SHA1('%s') WHERE %s = '%s'", ACCOUNT_TABLE, PASSWORD_FIELD, eSQL::EscapeString[1], USERNAME_FIELD, eSQL::EscapeString[0]);
  222.         case 3: format(eSQL::Query, 512, "UPDATE %s SET %s = SHA2('%s', 224) WHERE %s = '%s'", ACCOUNT_TABLE, PASSWORD_FIELD, eSQL::EscapeString[1], USERNAME_FIELD, eSQL::EscapeString[0]);
  223.         case 4: format(eSQL::Query, 512, "UPDATE %s SET %s = SHA2('%s', 256) WHERE %s = '%s'", ACCOUNT_TABLE, PASSWORD_FIELD, eSQL::EscapeString[1], USERNAME_FIELD, eSQL::EscapeString[0]);
  224.         case 5: format(eSQL::Query, 512, "UPDATE %s SET %s = SHA2('%s', 384) WHERE %s = '%s'", ACCOUNT_TABLE, PASSWORD_FIELD, eSQL::EscapeString[1], USERNAME_FIELD, eSQL::EscapeString[0]);
  225.         case 6: format(eSQL::Query, 512, "UPDATE %s SET %s = SHA2('%s', 512) WHERE %s = '%s'", ACCOUNT_TABLE, PASSWORD_FIELD, eSQL::EscapeString[1], USERNAME_FIELD, eSQL::EscapeString[0]);
  226.     }
  227.     return mysql_query(eSQL::Query, -1, -1, connectionHandle);
  228. }
  229. /******************************************************************************
  230. --- eSQL_GetMaxInt(Field[], Table[], connectionHandle = 1);
  231.  
  232. Gibt den Höchsten Integer aus einer Tabelle aus der in einem bestimmten feld liegt.
  233.  
  234.     Field[] - Das Feld (die Spalte) aus der der höchste Wert ausgelesen werden soll.
  235.     Table[] - Die Tabelle in der das Feld liegt.
  236.  
  237. Rückgabe: Den höchsten Integer.
  238. ******************************************************************************/
  239. stock eSQL_GetMaxInt(Field[], Table[], connectionHandle = 1)
  240. {
  241.     new eSQL::Query[512], eSQL::Int, eSQL::EscapeString[2][512];
  242.     mysql_real_escape_string(Field, eSQL::EscapeString[0]);
  243.     mysql_real_escape_string(Table, eSQL::EscapeString[1]);
  244.     format(eSQL::Query, 512, "SELECT MAX(%s) FROM %s", eSQL::EscapeString[0], eSQL::EscapeString[1]);
  245.     mysql_query(eSQL::Query, -1, -1, connectionHandle);
  246.     mysql_store_result(connectionHandle);
  247.     eSQL::Int = mysql_fetch_int(connectionHandle);
  248.     mysql_free_result(connectionHandle);
  249.     return eSQL::Int;
  250. }
  251. /******************************************************************************
  252. --- eSQL_GetMaxFloat(Field[], Table[], connectionHandle = 1);
  253.  
  254. Gibt den Höchsten Float Wert aus einer Tabelle aus der in einem bestimmten feld liegt.
  255.  
  256.     Field[] - Das Feld (die Spalte) aus der der höchste Wert ausgelesen werden soll.
  257.     Table[] - Die Tabelle in der das Feld liegt.
  258.  
  259. Rückgabe: Den höchsten Float wert.
  260. ******************************************************************************/
  261. stock eSQL_GetMaxFloat(Field[], Table[], connectionHandle = 1)
  262. {
  263.     new eSQL::Query[512], Float:eSQL::Float, eSQL::EscapeString[2][512];
  264.     mysql_real_escape_string(Field, eSQL::EscapeString[0]);
  265.     mysql_real_escape_string(Table, eSQL::EscapeString[1]);
  266.     format(eSQL::Query, 512, "SELECT MAX(%s) FROM %s", eSQL::EscapeString[0], eSQL::EscapeString[1]);
  267.     mysql_query(eSQL::Query, -1, -1, connectionHandle);
  268.     mysql_store_result(connectionHandle);
  269.     mysql_fetch_float(eSQL::Float, connectionHandle);
  270.     mysql_free_result(connectionHandle);
  271.     return eSQL::Float
  272. }
  273. /******************************************************************************
  274. --- eSQL_GetString(Table[], Field[], Where[], Is[], connectionHandle = 1);
  275.  
  276. Gibt den string zurück, der an der angegebenen Position in der angegebenen Tabelle liegt.
  277.  
  278.     Table[] - Die Tabelle in der der Wert liegt.
  279.     Field[] - Das Feld (die Spalte) in der der Wert liegt.
  280.     Where[] - Das Feld (die Spalte) in der Nach der Bedingung gesucht wird.
  281.     Is[] - Die bedingung um die richtige Reihe zu finden.
  282.  
  283. Rückgabe: Den string der gesucht wurde.
  284. ******************************************************************************/
  285. stock eSQL_GetString(Table[], Field[], Where[], Is[], connectionHandle = 1)
  286. {
  287.     new eSQL::Query[512], eSQL::Get[512], eSQL::EscapeString[4][512];
  288.     mysql_real_escape_string(Table, eSQL::EscapeString[0]);
  289.     mysql_real_escape_string(Field, eSQL::EscapeString[1]);
  290.     mysql_real_escape_string(Where, eSQL::EscapeString[2]);
  291.     mysql_real_escape_string(Is, eSQL::EscapeString[3]);
  292.     format(eSQL::Query, 512, "SELECT %s FROM %s WHERE %s = '%s'", eSQL::EscapeString[0], eSQL::EscapeString[1], eSQL::EscapeString[2], eSQL::EscapeString[3]);
  293.     mysql_query(eSQL::Query, -1, -1, connectionHandle);
  294.     mysql_store_result(connectionHandle);
  295.     mysql_fetch_row_format(eSQL::Get,"|",connectionHandle);
  296.     mysql_free_result(connectionHandle);
  297.     return eSQL::Get;
  298. }
  299. /******************************************************************************
  300. --- eSQL_GetInt(Table[], Field[], Where[], Is[], connectionHandle = 1);
  301.  
  302. Gibt den Integer zurück, der an der angegebenen Position in der angegebenen Tabelle liegt.
  303.  
  304.     Table[] - Die Tabelle in der der Wert liegt.
  305.     Field[] - Das Feld (die Spalte) in der der Wert liegt.
  306.     Where[] - Das Feld (die Spalte) in der Nach der Bedingung gesucht wird.
  307.     Is[] - Die bedingung um die richtige Reihe zu finden.
  308.  
  309. Rückgabe: Den Integer der gesucht wurde.
  310. ******************************************************************************/
  311. stock eSQL_GetInt(Table[], Field[], Where[], Is[], connectionHandle = 1)
  312. {
  313.     new eSQL::Query[512], eSQL::Int, eSQL::EscapeString[4][512];
  314.     mysql_real_escape_string(Table, eSQL::EscapeString[0]);
  315.     mysql_real_escape_string(Field, eSQL::EscapeString[1]);
  316.     mysql_real_escape_string(Where, eSQL::EscapeString[2]);
  317.     mysql_real_escape_string(Is, eSQL::EscapeString[3]);
  318.     format(eSQL::Query, 512, "SELECT %s FROM %s WHERE %s = '%s'", eSQL::EscapeString[0], eSQL::EscapeString[1], eSQL::EscapeString[2], eSQL::EscapeString[3]);
  319.     mysql_query(eSQL::Query, -1, -1, connectionHandle);
  320.     mysql_store_result(connectionHandle);
  321.     eSQL::Int = mysql_fetch_int(connectionHandle);
  322.     mysql_free_result(connectionHandle);
  323.     return eSQL::Int;
  324. }
  325. /******************************************************************************
  326. --- Float:eSQL_GetFloat(Table[], Field[], Where[], Is[], connectionHandle = 1);
  327.  
  328. Gibt den Float wert zurück, der an der angegebenen Position in der angegebenen Tabelle liegt.
  329.  
  330.     Table[] - Die Tabelle in der der Wert liegt.
  331.     Field[] - Das Feld (die Spalte) in der der Wert liegt.
  332.     Where[] - Das Feld (die Spalte) in der Nach der Bedingung gesucht wird.
  333.     Is[] - Die bedingung um die richtige Reihe zu finden.
  334.    
  335. Rückgabe: Den Float wert der gesucht wurde.
  336. ******************************************************************************/
  337. stock Float:eSQL_GetFloat(Table[], Field[], Where[], Is[], connectionHandle = 1)
  338. {
  339.     new eSQL::Query[512], Float:eSQL::Float, eSQL::EscapeString[4][512];
  340.     mysql_real_escape_string(Table, eSQL::EscapeString[0]);
  341.     mysql_real_escape_string(Field, eSQL::EscapeString[1]);
  342.     mysql_real_escape_string(Where, eSQL::EscapeString[2]);
  343.     mysql_real_escape_string(Is, eSQL::EscapeString[3]);
  344.     format(eSQL::Query, 512, "SELECT %s FROM %s WHERE %s = '%s'", eSQL::EscapeString[0], eSQL::EscapeString[1], eSQL::EscapeString[2], eSQL::EscapeString[3]);
  345.     mysql_query(eSQL::Query, -1, -1, connectionHandle);
  346.     mysql_store_result(connectionHandle);
  347.     mysql_fetch_float(eSQL::Float, connectionHandle);
  348.     mysql_free_result(connectionHandle);
  349.     return eSQL::Float;
  350. }
  351. /******************************************************************************
  352. --- eSQL_SetInt(Table[], Field[], To, Where[], Is[], connectionHandle = 1);
  353.  
  354. Ändert das angegebene Feld auf einen eneuen Wert.
  355.  
  356.     Table[] - Die Tabelle in der der Wert verändert werden soll.
  357.     Field[] - Das Feld (die Spalte) in der der Wert verändert werden soll.
  358.     To - Der Wert der an der in das Angegebene feld eingetragen werden soll.
  359.     Where[] - Das Feld (die Spalte) in der Nach der Bedingung gesucht wird.
  360.     Is[] - Die bedingung um die richtige Reihe zu finden.
  361.  
  362. Rückgabe: 1 wenn erfolgreich, 0 wenn nicht.
  363. ******************************************************************************/
  364. stock eSQL_SetInt(Table[], Field[], To, Where[], Is[], connectionHandle = 1)
  365. {
  366.     new eSQL::Query[128], eSQL::EscapeString[4][512];
  367.     mysql_real_escape_string(Table, eSQL::EscapeString[0]);
  368.     mysql_real_escape_string(Field, eSQL::EscapeString[1]);
  369.     mysql_real_escape_string(Where, eSQL::EscapeString[2]);
  370.     mysql_real_escape_string(Is, eSQL::EscapeString[3]);
  371.     format(eSQL::Query, 128, "UPDATE %s SET %s = '%d' WHERE %s = '%s'", eSQL::EscapeString[0], eSQL::EscapeString[1], To, eSQL::EscapeString[2], eSQL::EscapeString[3]);
  372.     return mysql_query(eSQL::Query, -1, -1, connectionHandle);
  373. }
  374. /******************************************************************************
  375. --- eSQL_SetString(Table[], Field[], To[], Where[], Is[], connectionHandle = 1);
  376.  
  377. Ändert das angegebene Feld auf einen eneuen Wert.
  378.  
  379.     Table[] - Die Tabelle in der der Wert verändert werden soll.
  380.     Field[] - Das Feld (die Spalte) in der der Wert verändert werden soll.
  381.     To[] - Der Wert der an der in das Angegebene feld eingetragen werden soll.
  382.     Where[] - Das Feld (die Spalte) in der Nach der Bedingung gesucht wird.
  383.     Is[] - Die bedingung um die richtige Reihe zu finden.
  384.  
  385. Rückgabe: 1 wenn erfolgreich, 0 wenn nicht.
  386. ******************************************************************************/
  387. stock eSQL_SetString(Table[], Field[], To[], Where[], Is[], connectionHandle = 1)
  388. {
  389.     new eSQL::Query[128], eSQL::EscapeString[5][512];
  390.     mysql_real_escape_string(Table, eSQL::EscapeString[0]);
  391.     mysql_real_escape_string(Field, eSQL::EscapeString[1]);
  392.     mysql_real_escape_string(To, eSQL::EscapeString[2]);
  393.     mysql_real_escape_string(Where, eSQL::EscapeString[3]);
  394.     mysql_real_escape_string(Is, eSQL::EscapeString[4]);
  395.     format(eSQL::Query, 128, "UPDATE %s SET %s = '%s' WHERE %s = '%s'", eSQL::EscapeString[0], eSQL::EscapeString[1], eSQL::EscapeString[2], eSQL::EscapeString[3], eSQL::EscapeString[4]);
  396.     return mysql_query(eSQL::Query, -1, -1, connectionHandle);
  397. }
  398. /******************************************************************************
  399. --- eSQL_SetFloat(Table[], Field[], Float:To, Where[], Is[], connectionHandle = 1);
  400.  
  401. Ändert das angegebene Feld auf einen eneuen Wert.
  402.  
  403.     Table[] - Die Tabelle in der der Wert verändert werden soll.
  404.     Field[] - Das Feld (die Spalte) in der der Wert verändert werden soll.
  405.     Float:To - Der Wert der an der in das Angegebene feld eingetragen werden soll.
  406.     Where[] - Das Feld (die Spalte) in der Nach der Bedingung gesucht wird.
  407.     Is[] - Die bedingung um die richtige Reihe zu finden.
  408.  
  409. Rückgabe: 1 wenn erfolgreich, 0 wenn nicht.
  410. ******************************************************************************/
  411. stock eSQL_SetFloat(Table[], Field[], Float:To, Where[], Is[], connectionHandle = 1)
  412. {
  413.     new eSQL::Query[128], eSQL::EscapeString[4][512];
  414.     mysql_real_escape_string(Table, eSQL::EscapeString[0]);
  415.     mysql_real_escape_string(Field, eSQL::EscapeString[1]);
  416.     mysql_real_escape_string(Where, eSQL::EscapeString[2]);
  417.     mysql_real_escape_string(Is, eSQL::EscapeString[3]);
  418.     format(eSQL::Query, 128, "UPDATE %s SET %s = '%f' WHERE %s = '%s'", eSQL::EscapeString[0], eSQL::EscapeString[1], To, eSQL::EscapeString[2], eSQL::EscapeString[3]);
  419.     return mysql_query(eSQL::Query, -1, -1, connectionHandle);
  420. }
  421. /******************************************************************************
  422. --- eSQL_CountDB(Table[], connectionHandle = 1);
  423.  
  424. Zählt die Reihen einer Tabelle und gibt diese als Integer zurück.
  425.  
  426.     Table[] - Die Tabelle in der die Anzahl an Reihen bestimmt werden soll.
  427.    
  428. Rückgabe: Die Anzahl an Reihen die in der angegebenen Tabelle existieren.
  429. ******************************************************************************/
  430. stock eSQL_CountDB(Table[], connectionHandle = 1)
  431. {
  432.     new eSQL::Query[128], eSQL::Rows, eSQL::EscapeString[512];
  433.     mysql_real_escape_string(Table,eSQL::EscapeString);
  434.     format(string, 128, "SELECT * FROM %s",eSQL::EscapeString);
  435.     mysql_query(eSQL::Query, -1, -1, connectionHandle);
  436.     mysql_store_result(connectionHandle);
  437.     eSQL::Rows = mysql_num_rows(connectionHandle);
  438.     mysql_free_result(connectionHandle);
  439.     return eSQL::Rows;
  440. }
  441. /******************************************************************************
  442. --- eSQL_DeleteRow(Table[], Where[], Is[], connectionHandle = 1);
  443.  
  444. Löscht eine Reihe aus einer Angegebenen Tabelle.
  445.  
  446.     Table[] - Die Tabelle aus der eine Reihe gelöscht werden soll.
  447.     Where[] - Das Feld (die Spalte) in der Nach der Bedingung gesucht wird.
  448.     Is[] - Die bedingung um die richtige Reihe zu finden.
  449.  
  450. Rückgabe: 1 wenn erfolgreich, 0 wenn nicht.
  451. ******************************************************************************/
  452. stock eSQL_DeleteRow(Table[], Where[], Is[], connectionHandle = 1)
  453. {
  454.     new eSQL::Query[512], eSQL::EscapeString[3][512];
  455.     mysql_real_escape_string(Table, eSQL::EscapeString[0]);
  456.     mysql_real_escape_string(Where, eSQL::EscapeString[1]);
  457.     mysql_real_escape_string(Is, eSQL::EscapeString[2]);
  458.     format(eSQL::Query, 512, "DELETE FROM %s WHERE %s = '%s'", eSQL::EscapeString[0], eSQL::EscapeString[1], eSQL::EscapeString[2]);
  459.     return mysql_query(eSQL::Query, -1, -1, connectionHandle);
  460. }
  461. /******************************************************************************
  462. --- eSQL_Close_Connection(connectionHandle = 1)
  463.  
  464. Schliesst eine bestehende MySQL Verbindung.
  465.  
  466. Rückgabe: 1 wenn erfolgreich, 0 wenn nicht.
  467. ******************************************************************************/
  468. stock eSQL_Close_Connection(connectionHandle = 1)
  469. {
  470.     return mysql_close(connectionHandle);
  471. }
  472. /******************************************************************************
  473. --- eSQL_GetStats(destination[],connectionHandle = 1);
  474.  
  475. Gibt die Aktuelle Statistik der Datenbank aus.
  476.    
  477.     destination[] - Der string in der die Statistik gespeichert werden soll.
  478.  
  479. Rückgabe: Diese funktion gibt keinen bestimmten wert zurück.
  480. ******************************************************************************/
  481. stock eSQL_GetStats(destination[],connectionHandle = 1)
  482. {
  483.     new eSQL::Stats[256];
  484.     mysql_stat(eSQL::Stats, connectionHandle);
  485.     strins(destination, eSQL::Stats, 0, sizeof(destination));
  486.     return true;
  487. }
  488. /******************************************************************************
  489. --- eSQL_AddField(Table[], FieldName[], type, Length = 0, Decimals = 0, values[]="", connectionHandle = 1);
  490.  
  491. Fügt einer Tabelle eine Spalte hinzu.
  492.    
  493.     Table[] - Die Tabelle in der eine neue Spalte hinzugefügt werden soll.
  494.     FieldName[] - Der name der Spalte
  495.     type - Der Typ der Spalte.
  496.         0 - int
  497.         1 - varchar
  498.         2 - float
  499.         3 - tinyint
  500.         4 - smallint
  501.         5 - mediumint
  502.         6 - integer
  503.         7 - bigint
  504.         8 - bit
  505.         9 - real
  506.         10 - double
  507.         11 - decimal
  508.         12 - numeric
  509.         13 - char
  510.         14 - date
  511.         15 - time
  512.         16 - year
  513.         17 - timestamp
  514.         18 - datetime
  515.         19 - tinyblob
  516.         20 - blob
  517.         21 - mediumblob
  518.         22 - longblob
  519.         23 - tinytext
  520.         24 - text
  521.         25 - mediumtext
  522.         26 - longtext
  523.         27 - binary
  524.         28 - varbinary
  525.         29 - point
  526.         30 - linestring
  527.         31 - polygon
  528.         32 - geometry
  529.         33 - multipoint
  530.         34 - multilinestring
  531.         35 - multipolygon
  532.         36 - geometrycollection
  533.         37 - enum
  534.         38 - set
  535.     Length - Die Länge des wertes
  536.     Decimals - die Anzahl der nachkomma stellen z.b bei einem Float wert.
  537.     values[] - Der/Die wert/e für enum und set typen. Mehrere Werte müssen mit einem (,) getrennt werden.
  538.  
  539. Rückgabe: 1 wenn erfolgreich, 0 wenn nicht.
  540. ******************************************************************************/
  541. stock eSQL_AddField(Table[], FieldName[], type, Length = 0, Decimals = 0, values[]="", connectionHandle = 1)
  542. {
  543.     new eSQL::Query[512],eSQL::EscapeString[2][512], eSQL::Values[512];
  544.     mysql_real_escape_string(Table, eSQL::EscapeString[0]);
  545.     mysql_real_escape_string(FieldName, eSQL::EscapeString[1]);
  546.    
  547.     if(!isnull(values) && (type==37 || type==38))
  548.     {
  549.         format(eSQL::Values, 512, "'%s'", values);
  550.         if(strfind(values, ",")!=-1)
  551.         {
  552.             new eSQL::Pos, eSQL::Blub = 0;
  553.             while(strfind(values, ",") != -1)
  554.             {
  555.                 eSQL::Pos = strfind(values, ",");
  556.                 strdel(values, strfind(values, ","), strfind(values, ",")+1);
  557.                 eSQL::Pos += eSQL::Blub;
  558.                 strins(eSQL::Values, "'", eSQL::Pos+1);
  559.                 strins(eSQL::Values, "'", eSQL::Pos+4);
  560.                 eSQL::Blub += 3;
  561.             }
  562.         }
  563.     }
  564.     switch(type)
  565.     {
  566.         case 0: format(eSQL::Query, 512, "ALTER TABLE %s ADD COLUMN %s int(%d)", eSQL::EscapeString[0], eSQL::EscapeString[1], Length);
  567.         case 1: format(eSQL::Query, 512, "ALTER TABLE %s ADD COLUMN %s varchar(%d)", eSQL::EscapeString[0], eSQL::EscapeString[1], Length);
  568.         case 2: format(eSQL::Query, 512, "ALTER TABLE %s ADD COLUMN %s float(%d,%d)", eSQL::EscapeString[0], eSQL::EscapeString[1], Length, Decimals);
  569.         case 3: format(eSQL::Query, 512, "ALTER TABLE %s ADD COLUMN %s tinyint(%d)", eSQL::EscapeString[0], eSQL::EscapeString[1], Length);
  570.         case 4: format(eSQL::Query, 512, "ALTER TABLE %s ADD COLUMN %s smallint(%d)", eSQL::EscapeString[0], eSQL::EscapeString[1], Length);
  571.         case 5: format(eSQL::Query, 512, "ALTER TABLE %s ADD COLUMN %s mediumint(%d)", eSQL::EscapeString[0], eSQL::EscapeString[1], Length);
  572.         case 6: format(eSQL::Query, 512, "ALTER TABLE %s ADD COLUMN %s integer(%d)", eSQL::EscapeString[0], eSQL::EscapeString[1], Length);
  573.         case 7: format(eSQL::Query, 512, "ALTER TABLE %s ADD COLUMN %s bigint(%d)", eSQL::EscapeString[0], eSQL::EscapeString[1], Length);
  574.         case 8: format(eSQL::Query, 512, "ALTER TABLE %s ADD COLUMN %s bit(%d)", eSQL::EscapeString[0], eSQL::EscapeString[1], Length);
  575.         case 9: format(eSQL::Query, 512, "ALTER TABLE %s ADD COLUMN %s real(%d,%d)", eSQL::EscapeString[0], eSQL::EscapeString[1], Length, Decimals);
  576.         case 10: format(eSQL::Query, 512, "ALTER TABLE %s ADD COLUMN %s double(%d,%d)", eSQL::EscapeString[0], eSQL::EscapeString[1], Length, Decimals);
  577.         case 11: format(eSQL::Query, 512, "ALTER TABLE %s ADD COLUMN %s decimal(%d,%d)", eSQL::EscapeString[0], eSQL::EscapeString[1], Length, Decimals);
  578.         case 12: format(eSQL::Query, 512, "ALTER TABLE %s ADD COLUMN %s numeric(%d,%d)", eSQL::EscapeString[0], eSQL::EscapeString[1], Length, Decimals);
  579.         case 13: format(eSQL::Query, 512, "ALTER TABLE %s ADD COLUMN %s char(%d)", eSQL::EscapeString[0], eSQL::EscapeString[1], Length);
  580.         case 14: format(eSQL::Query, 512, "ALTER TABLE %s ADD COLUMN %s date", eSQL::EscapeString[0], eSQL::EscapeString[1]);
  581.         case 15: format(eSQL::Query, 512, "ALTER TABLE %s ADD COLUMN %s time", eSQL::EscapeString[0], eSQL::EscapeString[1]);
  582.         case 16: format(eSQL::Query, 512, "ALTER TABLE %s ADD COLUMN %s year", eSQL::EscapeString[0], eSQL::EscapeString[1]);
  583.         case 17: format(eSQL::Query, 512, "ALTER TABLE %s ADD COLUMN %s timestamp(%d)", eSQL::EscapeString[0], eSQL::EscapeString[1], Length);
  584.         case 18: format(eSQL::Query, 512, "ALTER TABLE %s ADD COLUMN %s datetime", eSQL::EscapeString[0], eSQL::EscapeString[1]);
  585.         case 19: format(eSQL::Query, 512, "ALTER TABLE %s ADD COLUMN %s tinyblob", eSQL::EscapeString[0], eSQL::EscapeString[1]);
  586.         case 20: format(eSQL::Query, 512, "ALTER TABLE %s ADD COLUMN %s blob", eSQL::EscapeString[0], eSQL::EscapeString[1]);
  587.         case 21: format(eSQL::Query, 512, "ALTER TABLE %s ADD COLUMN %s mediumblob", eSQL::EscapeString[0], eSQL::EscapeString[1]);
  588.         case 22: format(eSQL::Query, 512, "ALTER TABLE %s ADD COLUMN %s longblob", eSQL::EscapeString[0], eSQL::EscapeString[1]);
  589.         case 23: format(eSQL::Query, 512, "ALTER TABLE %s ADD COLUMN %s tinytext", eSQL::EscapeString[0], eSQL::EscapeString[1]);
  590.         case 24: format(eSQL::Query, 512, "ALTER TABLE %s ADD COLUMN %s text", eSQL::EscapeString[0], eSQL::EscapeString[1]);
  591.         case 25: format(eSQL::Query, 512, "ALTER TABLE %s ADD COLUMN %s mediumtext", eSQL::EscapeString[0], eSQL::EscapeString[1]);
  592.         case 26: format(eSQL::Query, 512, "ALTER TABLE %s ADD COLUMN %s longtext", eSQL::EscapeString[0], eSQL::EscapeString[1]);
  593.         case 27: format(eSQL::Query, 512, "ALTER TABLE %s ADD COLUMN %s binary(%d)", eSQL::EscapeString[0], eSQL::EscapeString[1], Length);
  594.         case 28: format(eSQL::Query, 512, "ALTER TABLE %s ADD COLUMN %s varbinary(%d)", eSQL::EscapeString[0], eSQL::EscapeString[1], Length);
  595.         case 29: format(eSQL::Query, 512, "ALTER TABLE %s ADD COLUMN %s point", eSQL::EscapeString[0], eSQL::EscapeString[1]);
  596.         case 30: format(eSQL::Query, 512, "ALTER TABLE %s ADD COLUMN %s linestring", eSQL::EscapeString[0], eSQL::EscapeString[1]);
  597.         case 31: format(eSQL::Query, 512, "ALTER TABLE %s ADD COLUMN %s polygon", eSQL::EscapeString[0], eSQL::EscapeString[1]);
  598.         case 32: format(eSQL::Query, 512, "ALTER TABLE %s ADD COLUMN %s geometry", eSQL::EscapeString[0], eSQL::EscapeString[1]);
  599.         case 33: format(eSQL::Query, 512, "ALTER TABLE %s ADD COLUMN %s multipoint", eSQL::EscapeString[0], eSQL::EscapeString[1]);
  600.         case 34: format(eSQL::Query, 512, "ALTER TABLE %s ADD COLUMN %s multilinestring", eSQL::EscapeString[0], eSQL::EscapeString[1]);
  601.         case 35: format(eSQL::Query, 512, "ALTER TABLE %s ADD COLUMN %s multipolygon", eSQL::EscapeString[0], eSQL::EscapeString[1]);
  602.         case 36: format(eSQL::Query, 512, "ALTER TABLE %s ADD COLUMN %s geometrycollection", eSQL::EscapeString[0], eSQL::EscapeString[1]);
  603.         case 37: format(eSQL::Query, 512, "ALTER TABLE %s ADD COLUMN %s enum(%s)", eSQL::EscapeString[0], eSQL::EscapeString[1],eSQL::Values);
  604.         case 38: format(eSQL::Query, 512, "ALTER TABLE %s ADD COLUMN %s set(%s)", eSQL::EscapeString[0], eSQL::EscapeString[1],eSQL::Values);
  605.     }
  606.     return mysql_query(eSQL::Query, -1, -1, connectionHandle);
  607. }
  608. /******************************************************************************
  609. --- eSQL_DeleteField(Table[], FieldName[], connectionHandle = 1);
  610.  
  611. Entfernt eine Spalte aus einer Tabelle.
  612.    
  613.     Table[] - Die Tabelle in der eine Spalte entfernt werden soll.
  614.     FieldName[] - Der name der Spalte
  615.  
  616. Rückgabe: 1 wenn erfolgreich, 0 wenn nicht.
  617. ******************************************************************************/
  618. stock eSQL_DeleteField(Table[], FieldName[], connectionHandle = 1)
  619. {
  620.     new eSQL::Query[512],eSQL::EscapeString[2][512];
  621.     mysql_real_escape_string(Table, eSQL::EscapeString[0]);
  622.     mysql_real_escape_string(FieldName, eSQL::EscapeString[1]);
  623.     format(eSQL::Query, 512, "ALTER TABLE %s DROP COLUMN %s", eSQL::EscapeString[0], eSQL::EscapeString[1]);
  624.     return mysql_query(eSQL::Query, -1, -1, connectionHandle);
  625. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement