Base de datos con oxmysql · Lección 1/3 · 9 min
oxmysql: leer y escribir en la base de datos
oxmysql es el puente entre tu script y MySQL. Con cuatro funciones cubres casi todo.
Casi todo lo que persiste en tu servidor (dinero, vehículos, casas, inventario) vive en MySQL. El recurso oxmysql te da funciones sencillas para hablar con la base de datos desde Lua.
Cárgalo en tu recurso
-- fxmanifest.lua
server_scripts {
'@oxmysql/lib/MySQL.lua',
'server/main.lua',
}fxmanifest.lua
Las 4 funciones que más usarás
-- Leer varias filas
local filas = MySQL.query.await('SELECT * FROM jobs')
-- Leer UNA fila (o nil)
local user = MySQL.single.await('SELECT * FROM users WHERE identifier = ?', { id })
-- Insertar (devuelve el id nuevo)
local nuevoId = MySQL.insert.await('INSERT INTO logs (texto) VALUES (?)', { 'hola' })
-- Actualizar/borrar (devuelve filas afectadas)
local cambiadas = MySQL.update.await('UPDATE users SET banned = 1 WHERE identifier = ?', { id })CRUD con oxmysql
El .await hace que la consulta sea «síncrona» dentro de tu función: la respuesta llega antes de seguir. Cómodo y legible. (Existe la versión con callback, pero await es lo normal hoy.)
Practica lo aprendido
0/3¿Qué función de oxmysql usas para leer UNA sola fila (o nil si no hay)?
Pista
«single» = una sola.
Completa la lectura de UNA fila del jugador por su identifier, parametrizada.
local user = MySQL..await('SELECT * FROM users WHERE identifier = ?', { })Pista
single para una fila; el valor va en la tabla de parámetros { ... }.
Ordena la función de servidor que lee el dinero del banco de un jugador y lo devuelve.
Coloca las líneas en el orden correcto con las flechas.
endlocal function getBank(id) return user.bank if not user then return 0 end local user = MySQL.single.await('SELECT bank FROM users WHERE identifier = ?', { id })Pista
Primero consultas, luego compruebas que existe y al final devuelves el valor.
Reto: prográmalo tú
Lee el dinero del banco de un jugador desde la tabla users por su identifier y devuélvelo.
Escríbelo tú en tu editor (VS Code) y pruébalo en tu servidor. Aquí se aprende haciéndolo, no copiando.
Ver pista
MySQL.single.await('SELECT bank FROM users WHERE identifier = ?', { id }).
Escribe aquí tu solución:
