@AndRussia

MTA (Multi Theft Auto) LUA — Что не так с моим запросом в базу данных?

Здравствуйте, не пойму в чем моя ошибка. Что я сделал не так?
Суть в следующем: есть подключение к базе данных и sql запросы (код 1). Пытаюсь получить в переменную логин, пароль, но консоль выдает ошибку (скриншот 1)
Код 1:
function connect()
    db = dbConnect( "mysql", "dbname=users;host=127.0.0.1;charset=utf8", "root", "" )
    if (not db) then
        outputDebugString("Error: Failed to establish connection to the MySQL database server")
    else
    	dbExec(db, "CREATE TABLE IF NOT EXISTS users (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, login VARCHAR(32), password VARCHAR(24), status INT, hp INT, money INT, level INT)")
        outputDebugString("Success: Connected to the MySQL database server")
    end
end
addEventHandler("onResourceStart",resourceRoot, connect)

function playerRegister(login, password)
	local player = source
	local mylogin = getAccount(login)
	local mypassword = getAccount(password)
	if not getAccount(login) then
		addAccount(login, password)
		dbExec(db, "INSERT INTO users(login, password, status, hp, money, level) VALUES("..mylogin..", "..mypassword..", 1, 100, 1500, 16)")
		outputChatBox('Аккаунт успешно создан.', player)
	else
		outputChatBox('Аккаунт с таким логином существует!', player)
	end
end
addEvent('playerRegister', true)
addEventHandler('playerRegister', root, playerRegister)

function playerLogin(login, password)
	local player = source
	local mylogin = getAccount(login)
	local mypassword = getAccount(password)
	local dblogin = dbQuery(db, "SELECT `login` FROM `users` WHERE login = "..mylogin.."")
	local dbpassword = dbQuery(db, "SELECT `password` FROM `users` WHERE login = "..mylogin.."")
	if (dblogin == login) then
		if (dbpassword == password) then
			logIn(player, getAccount(login, password), password)
			outputChatBox('Добро пожаловать!', player)
			triggerClientEvent(player, 'closePanel', player)
			setElementFrozen(source, false)
		end
	else
		outputChatBox('Неправильный логин или пароль!', player)
	end
end
addEvent('playerLogin', true)
addEventHandler('playerLogin', root, playerLogin)

addEventHandler('onPlayerJoin', root, function()
	triggerClientEvent(source, 'openPanel', source)
	setElementFrozen(source, true)
end)
addEventHandler('onPlayerLogout', root, function()
	triggerClientEvent(source, 'openPanel', source)
	setElementFrozen(source, true)
end)

Скриншот 1:
5f7fff46563a0423123441.png
Не могу подобрать сложность вопроса, поставлю "Средний".
  • Вопрос задан
  • 64 просмотра
Решения вопроса 1
dollar
@dollar
На чёткий вопрос - чёткий ответ.
В Lua можно только цифры склеивать со строками с автоматическим приведением типов.
Остальные типы нужно вручную приводить к строкам.

Поэтому вместо:
", " .. mypassword .. ", 1, 100, 1500, 16)"
Нужно:
", " .. tostring(mypassword) .. ", 1, 100, 1500, 16)"
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы