Auslesen einer MySql DB?

01/26/2011 07:41 .2good4you111#1
Hey Com,

habe ein Problem mit der [Only registered and activated users can see links. Click Here To Register...] (MySql-UDF).

Ich kann zwar wunderbar in der DB schreiben, jedoch auslesen eines eintrages will nicht so ganz...

Ich poste euch hier meine Source. Nicht erschrecken, wird noch alles ein bisschen abgeändert fehlt nemlich noch einige... ist auch noch nicht so gut gescriptet von den funktionen her...

PHP Code:
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <mysql.au3>
#include <array.au3>



$host'127.0.0.1'
$user'root'
$pass''
$db'spenden'


_MySQL_InitLibrary()
If 
FileExists("libmysql.dll"Then
Else
    
FileInstall("lib\libmysql.dll""libmysql.dll")
EndIf



If 
FileExists(@TempDir&"\bg.jpg"Then
Else
    
FileInstall("bg.jpg",@TempDir&"\bg.jpg")
EndIf





#Region ### START Koda GUI section ### Form=C:\Users\maniii\Desktop\Spendenbot.kxf
$Gui GUICreate("Give an Click -- Get much much more Clicks"535341192124BitOR($WS_POPUP,$WS_CLIPSIBLINGS))

$LoginlabelGUICtrlCreateLabel("Login:"1102819648)
GUICtrlSetFont($Loginlabel284000"Old English Text MT")
_BKColor(-1$Loginlabel0xEF030A)



$regilabelinpGUICtrlCreateLabel("Gib hier deinen Benutzername ein,"&@CRLF&"falls du schon registriert bist"11078)
_BKColor(-1$regilabelinp0x00FFFF)
$regiinp GUICtrlCreateInput(""2907815024)
GUICtrlSetTip($regiinp"Gib hier deinen Benutzername ein.")

$pwlabelinpGUICtrlCreateLabel("Gib hier dein Passwort ein."110120)
_BKColor(-1$pwlabelinp0x00FFFF)
$pwinp GUICtrlCreateInput(""29012015024)
GUICtrlSetTip($pwinp"Gib hier dein Passwort ein.")


$Login GUICtrlCreateButton("Einloggen"1401609020)
$reset GUICtrlCreateButton("Zurücksetzten"3001609020)



$regilabel GUICtrlCreateLabel("Registrieren"33028819648)
GUICtrlSetFont($regilabel284000"Old English Text MT")
GUICtrlSetTip($regilabel"Klicke hier um dich zu registrieren.")
_BKColor(-1$regilabel0xEF030A)

$info GUICtrlCreateLabel("Info"102012)
GUICtrlSetTip($info"Info")
_BKColor(-1$info0x00FFFF)

$end GUICtrlCreateLabel("X"5270812)
GUICtrlSetTip($end"Beenden")
_BKColor(-1$end0x00FFFF)



GUISetState(@SW_SHOW)
$pic=GUICtrlCreatePic(@TempDir&"\bg.jpg"00535341)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg 
GUIGetMsg()
    Switch 
$nMsg
        
Case $GUI_EVENT_CLOSE
            end
()
        Case 
$regilabel
            regi
()
        Case 
$end
            end
()
        Case 
$info
            MsgBox
(0"""Hier werden später die Scripter und so stehen.")
        Case 
$reset
            GUICtrlSetData
($regiinp"")
            
GUICtrlSetData($pwinp"")
        Case 
$Login
            login
()
    EndSwitch
WEnd


Func login
()
    
$MysqlConn _MySQL_Init()
    
$connected _MySQL_Real_Connect($MysqlConn,$host,$user,$pass,$db)
    If 
$connected 0 Then
        MsgBox
(16"Verbindungsfehler""Keine Verbindung mit der Datenbank möglich.")
        Exit
    Else
        
$query = ("SELECT id FROM users where user = 2good")
        
_MySQL_Real_Query($MysqlConn$query)
        
$res _MySQL_Store_Result($MysqlConn)
        ;
$data=_MySQL_Fetch_Field()
        
$data=_MySQL_Free_Result($res)
        
_MySQL_Close($MysqlConn)
        
_MySQL_EndLibrary()
        
MsgBox(0"",$data)
    EndIf
EndFunc

Func regi
()
If 
GUICtrlRead($regiinp) = "" or GUICtrlRead($pwinp) = "" Then
    MsgBox
(16"Fehler""Bitte gib etwas ein.")
else

    
$MysqlConn _MySQL_Init()
    
$connected _MySQL_Real_Connect($MysqlConn,$host,$user,$pass,$db)
    If 
$connected 0 Then
        MsgBox
(16"Verbindungsfehler""Keine Verbindung mit der Datenbank möglich.")
        Exit
    Else
        
$passw GUICtrlRead($pwinp)
        
$query = ("INSERT INTO users (user,password) VALUES('"&GUICtrlRead($regiinp)&"','"&GUICtrlRead($pwinp)&"');")
        
_MySQL_Real_Query($MysqlConn$query)
        
MsgBox(0"Account erstellt""Dein Account wurde erstellt.")
        
_MySQL_Close($MysqlConn)
        
_MySQL_EndLibrary()
    EndIf
EndIf
EndFunc


Func end
()
    If 
MsgBox(4"Beenden""Möchtest du wirklich beenden?") = 6 Then
        
Exit
    Else
    EndIf
EndFunc


Func _BKColor
($BackColor_ ""$GuiID_ = -1$Textcolor_ 0x000000)
    If 
$BackColor_ "" or $BackColor_ = -1 Then
    GUICtrlSetBkColor
($GuiID_$GUI_BKCOLOR_TRANSPARENT)
    
GUICtrlSetColor($GuiID_$Textcolor_)
Else
    
GUICtrlSetBkColor($GuiID_$BackColor_)
    
GUICtrlSetColor($GuiID_$Textcolor_)
EndIf
EndFunc 
Es handelt sich um die Login Func


PHP Code:
/*
Navicat MySQL Data Transfer

Source Server         : 127.0.0.01
Source Server Version : 50141
Source Host           : localhost:3306
Source Database       : spenden

Target Server Type    : MYSQL
Target Server Version : 50141
File Encoding         : 65001

Date: 2011-01-26 08:36:57
*/

SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- 
Table structure for `users`
-- ----------------------------
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
  `
idint(5NOT NULL AUTO_INCREMENT,
  `
usertext,
  `
passwordtext,
  `
linktext,
  
PRIMARY KEY (`id`)
ENGINE=MyISAM AUTO_INCREMENT=15 DEFAULT CHARSET=latin1;

-- ----------------------------
-- 
Records of users
-- ----------------------------
INSERT INTO users VALUES ('12''2good''super''123');
INSERT INTO users VALUES ('13''12345''test'null);
INSERT INTO users VALUES ('14''xyz''fggf'null); 
Hier noch meine Tabelle welche in die spenden datenbank gehört...



Wenn ihr es lauffähig wollt, braucht ihr die MySql UDF von oben...
Ich weis außerdem nicht ob ich nur einen Falschen befehl verwende, oder nicht da mein SQL Befehl stimmt...


LG
2good


PS.
Am liebsten wäre es mir OHNE arrays
01/26/2011 09:04 -AmA-#2
1.
Falsch:
SELECT id FROM users where user = 2good
Richtig:
SELECT id FROM users where user = '2good'

2.
$data=_MySQL_Free_Result($res)
dient zum leeren der gebrauchten Memory...
Und in $data solte eigentlich nichts stehen

:D
Mfg
01/26/2011 09:26 .2good4you111#3
SELECT id FROM users where user = '2good'

Damit bekam ich immer 0 als rückgabewert...


Habe es jetzt über einen Umständlicheren Weg geschaft =)
Login funktioniert jetzt..

trzdem thx
01/26/2011 09:38 -AmA-#4
Quote:
Originally Posted by .2good4you111 View Post
SELECT id FROM users where user = '2good'

Damit bekam ich immer 0 als rückgabewert...


Habe es jetzt über einen Umständlicheren Weg geschaft =)
Login funktioniert jetzt..

trzdem thx
O.o
Rückgabewert = 0:
Es gab keine Fehler
Rückgabewert = 1:
Es gab Fehler
01/26/2011 10:00 .2good4you111#5
ô_O

Dachte eher das ist das was er aus der DB ausliest... xD
Da je die Querie normalerweiße etwas ausliest...

Und noch´n thx


Weist du zufällig auch einen Befehl womit man eine Betimmte row und eintrag ausliest?
01/26/2011 10:57 -AmA-#6
Quote:
Originally Posted by .2good4you111 View Post
ô_O

Dachte eher das ist das was er aus der DB ausliest... xD
Da je die Querie normalerweiße etwas ausliest...

Und noch´n thx


Weist du zufällig auch einen Befehl womit man eine Betimmte row und eintrag ausliest?
Sicher...
Dazu brauchste aber n Array
Also zur kurzen Erklärung:

Wir haben im Array bei einer Tabelle mit 2 Spalten folgender Inhalt:

Nummer des Datensatzes 1.Spalte 2.Spalte
[0] Testacc 1234
[1] Testacc2 2345
[2] Testacc3 3456
[3] Testacc4 4567

Code zur Abfrage (schreibt das Resultat in ein Array):
PHP Code:
$query "SELECT * FROM test"
_MySQL_Real_Query($MysqlConn$query)

$res _MySQL_Store_Result($MysqlConn)

$fields _MySQL_Num_Fields($res)
$rows _MySQL_Num_Rows($res)

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($lenthsStruct1$i)
        
$fieldPtr DllStructGetData($mysqlrow1$i)
        
$data DllStructGetData(DllStructCreate("char[" $length "]"$fieldPtr), 1)
        
$array[$k 1][$i 1] = $data
    Next
Next 
Möchtest du nun den Eintrag Testacc3 ausgeben, verwendest du einfach diesen Code:
MsgBox(0, "", $array[2][0])

Beim Array ist [0] auch ein Eintrag, daher must du immer von 0 zählen..
möchtest du also das Passwort von Testacc3 ausgeben, verwendest du:
MsgBox(0, "", $array[2][1])

Möchtest du dir das ganze Array betrachten, verwende diesen Befehl:
_ArrayDisplay($array)

Und da wär noch was...
benutzt du Arrays, must du zu beginn ein Include auf array.au3 machen...:
PHP Code:
#include <array.au3> 
01/26/2011 11:08 .2good4you111#7
THANX =)


Jetzt weis ich auch wie Arrays funnzen :D

wieder was gelernt