@mihailos

Почему данные не добавляются в бд?

<?php
$login = $_POST['login'];
$email = $_POST['email'];
$password = $_POST['pass'];
try{
    $conn = new PDO('mysql:host=localhost; dbname=testbd', 'root', '');
    $sql = "INSERT INTO users (login, email, password)
            VALUES($login, $email, $password)";
    $conn->exec($sql);
    }
catch(PDOExeptions $e){
    echo $sql . $e->getMessage();
    header("Location: index.php");
}
?>


Вот форма
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Вход</title>
</head>
<body>
    <form action="/check.php" method="post">
        <p><input type="text" placeholder="Введите логин" name="login"></p>
        <p><input type="email" placeholder="Введите email" name="email"></p>
        <p><input type="password" name="pass" placeholder="Введите пароль"></p>
        <p><input type="submit"></p>
    </form>
</body>
</html>

Ошибок не возникает, но данные не добавляются в бд
Почему??
  • Вопрос задан
  • 102 просмотра
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Ошибок не возникает потому что ты не сказал ПДО, чтобы он тебе о них сообщал.
А не добавляется потому что ты всё делаешь неправильно. Переменные никогда не добавляются прямо в запрос. Плюс в коде коде куча всего ненужного.

Вот здесь можно посмотреть нормальный пример
Сначала запрос надо подготовить , поставив вместо переменных знаки вопроса, а потом выполнить, передав переменные отдельно
<?php
$login = $_POST['login'];
$email = $_POST['email'];
$password = $_POST['pass'];
$conn = new PDO('mysql:host=localhost; dbname=testbd', 'root', '', [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);

$sql = "INSERT INTO users (login, email, password) VALUES (?,?,?)";
$stmt= $pdo->prepare($sql);
$stmt->execute([$login, $email, $password]);


И все всегда будет работать
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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