0

Помогите найти ошибку. Не добавляются данные в базу, ошибок не выдает. Переменные нормально выводятся через echo:

        $name=htmlspecialchars($_POST['name']);
        $mail=htmlspecialchars($_POST['email']);
        $phone=htmlspecialchars($_POST['phone']);
        $division=htmlspecialchars($_POST['division']);
        echo "$name, $mail, $phone, $division";

Если ввести данные прямо в строку ниже, то они нормально работают.

$query = "INSERT INTO `users` (`id_user`, `name_user`, `e-mail`, `phone_number`, `division`) VALUES (NULL, \'$name\', \'$email\', \'$phone\', \'$division\')";

файл index.php

    <!DOCTYPE html>
    <!--
    To change this license header, choose License Headers in Project Properties.
    To change this template file, choose Tools | Templates
    and open the template in the editor.
    -->

<html>
    <head>
        <meta charset="UTF-8">


    <title>Курсовая работа</title>
        <link rel="stylesheet"type="text/css" href="css/style.css" >    

    </head>
    <body>
        <frameset>
            <frame name="table">
       <?php
        include ("include/connect.php");
        $query ="SELECT * FROM users";

        $result = mysqli_query($link, $query) or die("Ошибка " . mysqli_error($link));


        if($result)
        {
            $rows = mysqli_num_rows($result); // количество полученных строк

            echo "<table align=centre cols=5 border 1>
                <tr><th>id</th><th> Имя пользователя   </th><th>e-mail</th><th>Телефон</th><th>Отдел</th>";
            for ($i = 0 ; $i < $rows ; ++$i)
            {
                $row = mysqli_fetch_row($result);
                echo "<tr>";
                for ($j = 0; $j < 5; ++$j) {
                    echo "<td>$row[$j]</td>";
                }
                echo "</tr>";
            }
            echo "</table>";
            mysqli_free_result($result);
        }

        //mysqli_close($link);

?>


           <frame name="table_change">
               <form> 
            <p>
                <tr><a href="db_insert.php" class="tab">
                    <input type="button" name="insert" value="Добавить" formtarget="_parent" ></a>
                <tr>
                    <input type="button" name="delit" value="Удалить" formtarget="_parent" >
                <tr>
                    <input type="button" name="chenge" value="Изменить" formtarget="_parent" >

        </form>
            </frameset>
    </body>
</html>

db_insert.php

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Курсовая работа</title>
        <link rel="stylesheet" href="css/style.css" >
    </head>
    <body>

        <!--        Форма ввода данных-->
        <form method="POST" action="db_insert.php">
            <label>ФИО <input type="text" name="name" /></label><br />

            <label>e-mail <input type="email" name="email" /></label><br />

            <label>Телефон <input type="tel" name="phone" /></label><br />

            <label>Отдел <input type="text" name="division" /></label><br />

            <p><tr><input type="submit" name="send" value="Добавить"/>
            <tr><a href="index.php" class="tab">
                    <input type="button" name="return" value="назад" /></a>        
        </form>

        <?php

//Выводим данные из формы в переменные
            $name=htmlspecialchars($_POST['name']);
            $mail=htmlspecialchars($_POST['email']);
            $phone=htmlspecialchars($_POST['phone']);
            $division=htmlspecialchars($_POST['division']);
//          echo "$name, $mail, $phone, $division"; 

// Добавляем данные в таблицу                       
            $query = "INSERT INTO `users` (`id_user`, `name_user`, `e-mail`, `phone_number`, `division`) VALUES (NULL, \'$name\', \'$email\', \'$phone\', \'$division\')";
            $result = mysqli_query($link,$query) or die(mysql_error());
//Если запрос пройдет успешно то в переменную result вернется true
        if($result == 'true') 
        {echo "Ваши данные успешно добавлены";}
        else{echo "Ваши данные не добавлены";}

        mysqli_free_result($result);
                mysqli_close($link);


        ?>

    </body>
</html>
  • Вставка переменных в сам запрос - это и есть ваша ошибка. Используйте подготовленные выражения при работе с базой: https://ru.stackoverflow.com/a/393456/186083 https://ru.stackoverflow.com/a/511896/186083 http://php.net/manual/ru/mysqli.prepare.php http://php.net/manual/ru/book.pdo.php http://phpfaq.ru/pdo – Visman Nov 15 '17 at 02:02
  • Что это такое? Вставка переменных идет просто указанием переменной если кавычки двойные, если одинарные нужно их закрывать, обьявлять добавлять переменную и открывать снова. Так есть $query = "INSERT INTO users (id_user, name_user, e-mail, phone_number, division) VALUES (NULL, $name,.... – Telion Nov 15 '17 at 03:22
  • $link не объявляли нигде судя по тому, что вижу – Alex Nov 15 '17 at 06:12
  • кавычки в запросе почему разные? – Jean-Claude Nov 15 '17 at 07:13
  • $link объевлен в другом файле
    $link = mysqli_connect("localhost", "root", "*****", "programcourse"); С кавычками косяк, но я пробовала и одинарные и двойные и те и другие вместе ))).
    – Екатерина Лемеш Nov 17 '17 at 03:50
  • Добавила код для подключения к базе, данные добавились. Тперь не понятно, как развести код на подключение и код на добавление по разным файлам? – Екатерина Лемеш Nov 17 '17 at 04:08

0 Answers0