все значения очищаются при попытке вставить значение в таблицу - PullRequest
0 голосов
/ 03 ноября 2018

Я пытаюсь просто вставить значения в таблицу базы данных, используя PHP. но каждый раз все предварительно вставленные значения стираются, и вставка значений не происходит.

<?php
$servername = "localhost";
$username = "root";
$password = "rex";
$dbname = "test";
$usr = $_POST["Username"];
$pass = $_POST["password"];

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $sql = "INSERT INTO users(username,password)VALUES('$usr','$pass')";
    // use exec() because no results are returned
    $conn->exec($sql);
    echo "New record created successfully";
    }
catch(PDOException $e)
    {
    echo $sql . "<br>" . $e->getMessage();
}

$conn = null;
?>

Ответы [ 2 ]

0 голосов
/ 04 ноября 2018
  • За исключением редких случаев, не используйте прямые операторы DML для элементов управления доступом в базе данных mysql. Вместо этого используйте CREATE USER, GRANT и т. Д.
  • После изменения привилегий вам нужно запустить FLUSH PRIVILEGES, чтобы они вступили в силу.
0 голосов
/ 03 ноября 2018

Это должно работать:

$sql = "INSERT INTO users (username, password) VALUES (?, ?)";
$prepared = $conn->prepare($sql);
$prepared->execute([$usr, $pass]);

Это также лучше, так как вы связываете переменные.

http://php.net/manual/en/pdo.prepare.php

Вам также следует продезинфицировать ваши $_POST -варианты. Имя пользователя также пишется с заглавной U в вашей $_POST -вариат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...