Добавление записей в БД через PHP

210
01 августа 2018, 12:20

Во-первых, в моем коде запись в БД почему-то добавляется через форму, но не во все поля.

В таблице - поля id, name, email, password, balance, ip_reg и data_reg, но записать их все в запрос query не получается:

if (isset($_POST["reg"])) {
      //$Name = $mysqli->real_escape_string(htmlspecialchars($_POST['name'])); 
       $query = ("INSERT INTO `secret_users` 
         (`name`, `email`) VALUES ('".$_POST['name']."','".$_POST['email']."')");

        $result = $mysqli->query($query);
    }
 $mysqli->close(

Если же добавить в VALUES поля таким образом, то тоже не работает:

VALUES ('$name', '$email', MD5('$password'), '$ip_reg', UNIX_TIMESTAMP())";

Во-вторых, само обращение к БД и создание нового пользователя не происходит:

$mysqli->query("INSERT INTO `secret_users`
    ( `name`, `email`, `password`, `balance`, `ip_reg`, `date_reg`)
    VALUES ('Denis', '2@mail.ru', MD5('1234'), '0.00', INET_ATON('127.0.0.1'), UNIX_TIMESTAMP())");
 $mysqli->close();

Код полностью:

<?php
 define('DB_HOST', 'localhost');
    define('DB_USER', 'root');
    define('DB_PASSWORD', '');
    define('DB_NAME', 'mysite');
   $mysqli = @new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
    if ($mysqli->connect_errno) exit('Ошибка соединения с БД');
    $mysqli->set_charset('utf8');

    /*$mysqli->query("INSERT INTO `secret_users`
    ( `name`, `email`, `password`, `balance`, `ip_reg`, `date_reg`)
    VALUES ('Denis', '2@mail.ru', MD5('1234'), '0.00', INET_ATON('127.0.0.1'), UNIX_TIMESTAMP())");
 $mysqli->close();
*/
//Если переменная Name передана
/*if (isset($_POST["reg"])) {
     $name = $mysqli->real_escape_string(htmlspecialchars($_POST['name'])); 
 $email = $mysqli->real_escape_string(htmlspecialchars($_POST['email']));
        $password = $mysqli->real_escape_string(htmlspecialchars($_POST['password']));
        $ip_reg = ip2long($_SERVER['REMOTE_ADDR']);
       $query = ("INSERT INTO `secret_users`  
        (`name`, `email`, `password`) 
        VALUES ('$name', '$email', MD5('$password')");
        $result = $mysqli->query($query);
    }*/
    if (isset($_POST["reg"])) {
      //$Name = $mysqli->real_escape_string(htmlspecialchars($_POST['name'])); 
       $query = ("INSERT INTO `secret_users` 
         (`name`, `email`) VALUES ('".$_POST['name']."','".$_POST['email']."')");

        $result = $mysqli->query($query);
    }
 $mysqli->close();

    //Вставляем данные, подставляя их в запрос
  /*  $sql = mysql_query("INSERT INTO `products` (`Name`, `Price`) 
                        VALUES ('".$_POST['Name']."','".$_POST['Price']."')");*/
    //Если вставка прошла успешно
   /* if ($mysqli) {
        echo "<p>Данные успешно добавлены в таблицу.</p>";
    } else {
        echo "<p>Произошла ошибка.</p>";
    }
}*/
/*if (isset($_POST['reg'])) { // если форма пришла нач рег.
        $name = $mysqli->real_escape_string(htmlspecialchars($_POST['name'])); // $mysqli->real_escape_string  метод безопасности
        $email = $mysqli->real_escape_string(htmlspecialchars($_POST['email']));
        $password = $mysqli->real_escape_string(htmlspecialchars($_POST['password'])); // если в sql запросе
        //    $password = md5 (htmlspecialchars($_POST['password']); // 2 вар.
        // далее необхпроверить входные данные - в этом коде этого нет
        $ip_reg = ip2long($_SERVER['REMOTE_ADDR']);
        $query = ("INSERT INTO `secret_users`  
        (`name`, `email`, `password`, `ip_reg`, `date_reg`) 
        VALUES ('$name', '$email', MD5('$password'), '$ip_reg', UNIX_TIMESTAMP()");
        $result = $mysqli->query($query);
    }
 $mysqli->close();*/
?>
<?php if (isset($result)) { ?>
    <?php if ($result) { ?>
        <p>Регистрация прошла успешно!</p>
    <?php } else { ?>
        <p>Произошла ошибка</p>
    <?php } ?>
<?php } ?>
<table>
<form name='reg' action='index.php' method='post'>
    <p>
        Имя: <input type='text' name='name' />
    </p>
    <p>
        E-mail: <input type='text' name='email' />
    </p>
    <p>
        Пароль: <input type='password' name='password' />
    </p>
    <p>
        <input type='submit' name='reg' value='Зарегистрироваться' />
    </p>
</table>
<?php

Cо 2 п. разобрался

$mysqli->query ("INSERT INTO `secret_users`
  (`id`, `name`, `email`, `password`, `balance`, `ip_reg`, `data_reg`) 
  VALUES (NULL, 'Dinn', 'dinn@mail.ru', MD5('123'), '0.00', INET_ATON('127.0.0.1'), UNIX_TIMESTAMP())");

 $mysqli->close();*/
Answer 1

1 вопрос:

//Если переменная reg передана 
if (isset($_POST["reg"])) { 
     $name = $mysqli->real_escape_string(htmlspecialchars($_POST['name']));  
 $email = $mysqli->real_escape_string(htmlspecialchars($_POST['email'])); 
        $password = $mysqli->real_escape_string(htmlspecialchars($_POST['password'])); 
        $ip_reg = ip2long($_SERVER['REMOTE_ADDR']); 
       $query = ("INSERT INTO `secret_users` 
      (`id`, `name`, `email`, `password`,  `ip_reg`, `data_reg`)  
        VALUES (NULL, '$name', '$email', MD5('$password'), '$ip_reg', UNIX_TIMESTAMP())"); 
        $result = $mysqli->query($query); 
 
 
         if (isset($result)) {              
 
        echo "<p>Данные успешно добавлены в таблицу.</p>"; 
    } else { 
        echo "<p>Произошла ошибка.</p>"; 
    } 
    }

2 вопрос

$mysqli->query ("INSERT INTO `secret_users` 
  (`id`, `name`, `email`, `password`, `balance`, `ip_reg`, `data_reg`)  
  VALUES (NULL, 'Dinn', 'dinn@mail.ru', MD5('123'), '0.00', INET_ATON('127.0.0.1'), UNIX_TIMESTAMP())"); 
 
 
 $mysqli->close();*/

READ ALSO
До жути странный вопрос по PHP

До жути странный вопрос по PHP

Вообщем есть такая функция:

149
Алгоритм расположения наклеек на кубике Рубика произвольного размера

Алгоритм расположения наклеек на кубике Рубика произвольного размера

Допустим есть кубик рубика произвольного размера NxNxN

143
Получить ссылку с якорем через $_SERVER

Получить ссылку с якорем через $_SERVER

У меня есть главная страница с ссылкой-якорем #id и когда пытаюсь получить в if-e $_SERVER[REQUEST_URI] - получаю строку с адресом без #idкак получить ссылку...

145