Szerző Téma: MySQL lekérdezés  (Megtekintve 1507 alkalommal)

MySQL lekérdezés
« Dátum: 2017. December 24. - 15:23:34 »
0
Sziasztok. Van egy kis login részem, full hülye vagyok a MySQL-hez, azt elmondom. Lekérem a MySQL-ből az accounts táblában lévő username részt. Eddig megvan, viszont ezek után hogyan lehetne azt, hogy ha már van ilyen felhasználónév regisztrálva, akkor ne engedje ezt az adott illetőnek?
 
MySQL scriptem: https://pastebin.com/RXk2ztwf
 
Illetve egyáltalán helyesen kértem én ezt le?
 


local check = exports.mysql:_QuerySingle(\"select * from accounts where username = ? \",username)

MySQL lekérdezés
« Válasz #1 Dátum: 2017. December 25. - 18:11:43 »
+1
Szia!
 
Tedd az username oszlopot unique-ra, és a probléma megoldva. Sőt, alapból azon kéne lennie, ha valami igényesebb dolgot szeretnél összevágni.

MySQL lekérdezés
« Válasz #2 Dátum: 2017. December 25. - 20:12:21 »
0
Amit leraktál if-be rakod és jó is, de igen 
 
Idézetet írta: Robika1 date=1514221903


   
       
   
   
      Tedd az username oszlopot unique-ra
   


 

MySQL lekérdezés
« Válasz #3 Dátum: 2018. Január 07. - 02:15:05 »
0
dbPoll

MySQL lekérdezés
« Válasz #4 Dátum: 2018. Január 12. - 22:35:55 »
0
Köszönöm válaszotokat :) És feltölteni rá adatot hogyan tudok? Mármint melyik kell hozzá?

MySQL lekérdezés
« Válasz #5 Dátum: 2018. Január 12. - 23:29:53 »
0

MySQL lekérdezés
« Válasz #6 Dátum: 2018. Január 13. - 11:20:36 »
0
Köszönöm a segítségeteket! :) Igából nem az UPDATE-t használom, viszont maga az oldal segített jobban értelmezni az adott dolgot, amit köszönöm : ) ( végül rájöttem, hogy amit keresek az a dbExec )
 


dbExec( connection, \"INSERT INTO accounts VALUES (?,?,?,?,?)\", 1, \"username\",\"password\",\"email\",\"ip\" )

MySQL lekérdezés
« Válasz #7 Dátum: 2018. Január 13. - 12:24:00 »
0
Bocs este volt, UPDATE el frissiteni lehet az adatokat.

MySQL lekérdezés
« Válasz #8 Dátum: 2018. Január 13. - 16:17:54 »
0
Nem baj, ez segített nekem kicsit, illetve legalább ezt is megtudtam, biztos hasznomra fog még válni ;) ! Illetve még egy kérdésem lenne ( igazából mondhatni ugyan az mint az alap kérdés, a lekérdezés... ), az előző másolt sorom az egy undorító, youtube videó utánzat volt. Most úgy gondoltam, magamtól is megpróbálok rájönni az SQL lekérdezésére, illetve adat feltöltésére. A \"feltöltés\" már megvan, ugye az a dbExec, viszont arra nem tudok rájönni, hogyan lehetséges magát az adatot lekérdezni, esetleg ezt egy outputChatBox-ba is kiíratni. ( pl.: lekérni a serial-t, ha van már ilyen felh. ne tudjon regisztrálni + ki is írni neki outputChatBox-ba a serialját. ) dbQuery-t nagyon nézegetem, próbálok rájönni, viszont nem megy. ( A MySQL-em: https://imgur.com/a/vfBR6, serial és az IP szándékosan van kitakarva! )

MySQL lekérdezés
« Válasz #9 Dátum: 2018. Január 13. - 22:37:29 »
0
Nos, az előzőt megoldottam végül is. Viszont már tényleg egy utolsó kérdésem lenne. Sikeresen megcsináltam, hogy ha nem az adott felhasználónév/jelszó nem a kiválasztott géphez van társítva, akkor nem tud bejelentkezni, viszont nem tudom megcsinálni, hogy ha van már ilyen serial az accounts-ba, akkor ne tudjon létrehozni új felhasználót :/ . Esetleg valaki még ebben tudna segíteni?
 


addEvent(\"loginPlayer\", true)
function loginPlayer(player, username, password, serial)
    local check = exports.mta_connection:_QuerySingle(\"SELECT * FROM accounts WHERE username = ?\",username)
    local serial = getPlayerSerial(player)
    if check then
        local checkPass = check.password
        local checkSerial = check.serial
        if ( checkSerial == serial ) then
            if (checkPass == password) then
                logIn(player,tostring(username),tostring(password))
                outputDebugString(\"User is loggined!\")
                triggerClientEvent(player,\"showHide\",getRootElement())
            else
                exports[\"notices\"]:addNotification(root,\"Hibás felhasználónév/jelszó!\",\'error\')
            end
        else
            exports[\"notices\"]:addNotification(root,\"Ez a felhasználó nem ehhez a számítógéphez van társítva!\",\'error\')
        end
    else
        exports[\"notices\"]:addNotification(root,\"Hibás felhasználónév/jelszó!\",\'error\')
    end
end
addEventHandler(\"loginPlayer\", getRootElement(),loginPlayer)
addEvent(\"registerPlayer\", true)
function registerPlayer(player, username, password, email, serial, ip, money)
    local serial = getPlayerSerial(player)
    local check = exports.mta_connection:_QuerySingle(\"SELECT * FROM accounts WHERE serial = ?\",serial)
    if ( check ~= serial ) then
        local account = getAccount(username)
        if account == false then
            local ip = getPlayerIP(player)
            local money = 100
            exports.mta_connection:_Exec(\"INSERT INTO accounts(username,password,email,serial,ip,money) values (?,?,?,?,?,?)\",username,password,email,serial,ip,money)
            local addAccount = addAccount(tostring(username), tostring(password))
            if addAccount then
                exports[\"notices\"]:addNotification(root,\"A felhasználó sikeresen létrehozva!\",\'succes\')
            else
                exports[\"notices\"]:addNotification(root,\"Hiba történt! Keress fel egy fejlesztőt a problémával kapcsolatban!\",\'error\')
            end
        else
            exports[\"notices\"]:addNotification(root,\"Ez a felhasználónév már foglalt! Válassz másikat!\",\'error\')
        end
    else
        exports[\"notices\"]:addNotification(root,\"Ehhez a számítógéphez van felhasználó társítva!\",\'error\')
    end
end
addEventHandler(\"registerPlayer\", getRootElement(), registerPlayer)

MySQL lekérdezés
« Válasz #10 Dátum: 2018. Január 14. - 10:35:23 »
0
Unique legyen a serial oszlop.
 
Meg keress rá selectel a serial oszlopra, és ha false akkor még nincs bent olyan serial.
« Utoljára szerkesztve: 2018. Január 14. - 10:36:29 írta thegergo02 »

MySQL lekérdezés
« Válasz #11 Dátum: 2018. Január 14. - 14:08:28 »
0
Nos, hát jelenleg így állok, viszont ugye ezzel az a baj, hogy az accounts-ban az első sort íratja ki, amit legelsőnek talál. Hogyan tudnám megcsinálni, hogy az összeset keresse ki?
 


local serial = getPlayerSerial(player)
local query = dbQuery(connect,\"SELECT * FROM accounts WHERE serial = serial\", serial)
local result, num_rows = dbPoll(query, -1)
if not ( result == nil ) then
    outputServerLog(result[1][\"serial\"])
else
    dbFree(query)
end

MySQL lekérdezés
« Válasz #12 Dátum: 2018. Január 14. - 14:48:00 »
0
Vagy igazából itt van a MySQL scriptje, amit ugye youtube-ról másoltam. Esetleg eltudná valaki mondani, mit jelent maga a querySingle? Előre is köszönöm.
 


local connection = nil
addEventHandler(\"onResourceStart\",resourceRoot,function(resource)
        connection = dbConnect(\"mysql\",\"dbname=ig_mta;host=localhost;port=3306;\",\"root\",\"martinka02\")
        if connection then
            outputDebugString(getResourceName(resource) .. \" : connected to database.\")
            return true
        else
            outputDebugString(getResourceName(resource) .. \" : Unable to connect with database. Please contact Developer.\")
            return false
        end
    end
)
function _Query( ... )
    if connection then
        local query = dbQuery(connection, ... )
        local result = dbPoll(query,-1)
        return result
    else
        return false
    end
end
function _QuerySingle(str,...)
    if connection then
        local result = _Query(str,...)
        if type(result) == \'table\' then
            return result[1]
        end
    else
        return false
    end
end
function _Exec(str,...)
    if connection then
        local query = dbExec(connection,str,...)
        return query
    else
        return false
    end
end

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal