@stasbombit

Занесение данных из формы в базу данных?

Пытаюсь сделать подобие формы регистрации но появляется ошибка Ошибка: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' passwd, Вася)' at line 1
форма
<form method="post" action="cradmin.php">
    <label for="id">id</label>
    <input type="text" id="id" name="id" required>
    <label for="username">Username</label>
    <input type="text" id="username" name="username" required>
    <label for="password">Password</label>
    <input type="password" id="password" name="password" required>
    <label for="name">name</label>
    <input type="text" id="name" name="name" required>
    <button type="submit">Register</button>
</form>

php обработчик
<?php

    $conn = new mysqli("зачем", "вам", "это", "знать?");
    if($conn->connect_error){
        die("Ошибка: " . $conn->connect_error);
    }
    $name = $_POST["name"];
    $login = $_POST["login"];
    $pass = $_POST["password"];
    $id = $_POST["id"];
    $sql = "INSERT INTO admins (id, login, pass, name) VALUES ($id, $login, $pass, $name)";
    if($conn->query($sql)){
        echo "Данные успешно добавлены";
    } else{
        echo "Ошибка: " . $conn->error;
    }
    $conn->close();

?>

ну и запрос
INSERT INTO admins (id, login, pass, name) VALUES ($id, $login, $pass, $name)
  • Вопрос задан
  • 152 просмотра
Решения вопроса 2
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
Надо выкинуть на помойку учебник, из которого взят этот код, пройти по ссылке, и написать нормальный на основе информации оттуда

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$conn = new mysqli("зачем", "вам", "это", "знать?");

$name = $_POST["name"];
$login = $_POST["login"];
$pass = $_POST["password"];

$sql = "INSERT INTO admins (login, pass, name) VALUES (?,?,?)";
$stmt = $conn->prepare($sql);
$stmt->bind_param("sss", $login, $pass, $name);
$stmt->execute();

$id = $conn->insert_id;
header("Location: profile.php?id=$id");


Пара замечаний
  • отдельная таблица админов обычно не делается, достаточно общей таблицы пользователей
  • id вставлять не надо, его должна генерировать БД
  • после успешной обработки прямого POST запроса обязательно должен быть редирект. Обычно это либо созданная учетка, или страница входа или список пользователей или что-то ещё
  • при обработке прямого запроса никаких echo в коде быть не должно
Ответ написан
delphinpro
@delphinpro Куратор тега PHP
frontend developer
Опуская замечания о sql-инъекциях, строковые значения должны быть в кавычках
$sql = "INSERT INTO admins (id, login, pass, name) VALUES ($id, '$login', '$pass', '$name')";


А вообще, сначала прочитайте это https://habr.com/ru/articles/662523/
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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