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

lua
-- fxmanifest.lua
server_scripts {
  '@oxmysql/lib/MySQL.lua',
  'server/main.lua',
}

fxmanifest.lua

Las 4 funciones que más usarás

lua
-- 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
Test

¿Qué función de oxmysql usas para leer UNA sola fila (o nil si no hay)?

Pista

«single» = una sola.

Rellena los huecos

Completa la lectura de UNA fila del jugador por su identifier, parametrizada.

1local user = MySQL..await('SELECT * FROM users WHERE identifier = ?', { })
Pista

single para una fila; el valor va en la tabla de parámetros { ... }.

Ordena el código

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.

end
local 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:

¿Qué tal esta lección?