@cheremuxatop

POST запрос из LUA в PHP добавляет пустые переменные MySQL?

Всем привет, объясняю:
Есть скрипт в котором есть код:
_, adminId = sampGetPlayerIdByCharHandle(playerPed)
	admName = sampGetPlayerNickname(adminId)

	local data = "Admin Name = " .. admName .. " ID = " .. adminId
	httpRequest('http://мойсайт.домен/vk_notify.php/', data)


adminId, admName - передают свои данные в переменную DATA в которой они обрабатываются
Далее летит запрос на .php файл с кодом:
<?php

$mysql = mysqli_connect('localhost', 'hidden', 'hidden', 'hidden');
if (!$mysql) exit('[CONNECTION ERROR]');

$admName = (isset($_POST['adminName']) ? strval($_POST['adminName']) : '$adminName');
$adminId = (isset($_POST['adminId']) ? strval($_POST['adminId']) : '$adminId');


if ($stmt = $mysql->prepare("INSERT INTO `admins` (`adminName`, `adminId`) VALUES ('$admName', '$adminId')")) {
    $stmt->bind_param('ss', $admName, $adminId);
    if ($stmt->execute()) {
        echo '[200] Successfully.';
        $stmt->close();
    } else {
        echo '[---] Error.';
        $stmt->close();
    }
}
?>


После того как LUA отправляет свой запрос PHP последний в свою очередь выводит в столбцах базы данных следующее:
$admName
$adminId

(Да, я проверял переменную data в lua, так все нормально)

Далее решил проверить PHP код без '' в этих строках в конце:
$admName = (isset($_POST['adminName']) ? strval($_POST['adminName']) : $adminName);
$adminId = (isset($_POST['adminId']) ? strval($_POST['adminId']) : $adminId);

И записалось пустое значение.
Далее я добавил после
$admName = (isset($_POST['adminName']) ? strval($_POST['adminName']) : $adminName);
$adminId = (isset($_POST['adminId']) ? strval($_POST['adminId']) : $adminId);

Это:
$admName = 11;
$adminId = 55;


И на удивление все записалось.
Вопрос:

Как мне записать в базу данных мои значения из Lua по POST запросу?
  • Вопрос задан
  • 463 просмотра
Решения вопроса 1
Daemon23RUS
@Daemon23RUS
У Вас запрос "не биндится", замените на ...
if ($stmt = $mysql->prepare("INSERT INTO `admins` (`adminName`, `adminId`) VALUES (?,?)")) {

У Вас при отсутсвии POST переменных которые вы записываете в БД им присваиваются значения (которые и пишутся затем в БД)
$admName = (isset($_POST['adminName']) ? strval($_POST['adminName']) : '$adminName');
$adminId = (isset($_POST['adminId']) ? strval($_POST['adminId']) : '$adminId');

У Вас при отправке POST запрса из LUA "каша"
local data = "Admin Name = " .. admName .. " ID = " .. adminId
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы