За последние 24 часа нас посетили 17792 программиста и 1712 роботов. Сейчас ищут 1055 программистов ...

Работа с базой данных

Тема в разделе "PHP и базы данных", создана пользователем RedWings, 5 фев 2019.

  1. RedWings

    RedWings Новичок

    С нами с:
    5 фев 2019
    Сообщения:
    2
    Симпатии:
    0
    Добрый день.
    Подскажите пожалуйста, как можно правильно исправить код, чтобы был коннект с базой данных и чтобы можно было записывать туда данные через HTML форму. Не могу понять где ошибки((

    HTML:
    1. <!DOCTYPE html>
    2.     <head>
    3.         <title>Data</title>
    4.         <meta charset="utf-8" />
    5.     </head>
    6.     <body>
    7.         <h1>DataBase</h1>
    8.        
    9.     <?php
    10. // if($errMsg)
    11. //    echo "<h3>$errMsg</h3>"
    12. ?>
    13.        
    14.         <form action = "<?= $_SERVER['PHP_SELF']; ?>"
    15.         method='post'>
    16.             <p>Name:<br /><input type="text" name="name" /></p>
    17.             <p>Salary:<br /><input type="text" name="role" /></p>
    18.             <p>Role:<br /><input type="text" name="salary" /></p>
    19.             <p>E-Mail:<br /><input type="text" name="email" /></p>
    20.             <p><input type="submit" value="Отправить"></p>
    21.  
    22.         </form>
    23.        
    24.          <?php
    25. //$post = $data->getData();
    26. //print_r($posts);
    27. ?>
    28.      
    29.     </body>
    30. </html>
    31.  
    32.  
    33. <?php




    PHP:
    1. class Users
    2. {
    3.     private $_db = null;
    4.  
    5.     function connectDb()
    6.     {
    7.        
    8.         $conn = new mysqli_connect('localhost', 'root', 'root', 'developers');
    9.         //mysqli_select_db($conn, "workers")
    10.        
    11.         if (!$conn) {
    12.             echo mysqli_connect_errno();
    13.             echo "<br>";
    14.             echo mysqli_connect_error();
    15.         }
    16.         mysqli_close($conn);
    17.     }
    18.  
    19.     //2
    20.     //$sql = new Users();
    21.     function createData()
    22.     {
    23.         $sql = "INSERT INTO members (name, role, salary, email) VALUES ('name', 'role', 'salary', 'email')";
    24.         $res = $this->_db->exec($sql);
    25.         if (mysqli_query($conn, $sql)) {
    26.             echo "New record created successfully";
    27.         } else {
    28.             echo "Error: " . $sql . "<br>" . mysqli_error($conn);
    29.         }
    30.     }
    31. }
     
  2. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    657
    Без обид. Вам нужно сначала добиться мин. уровня вменяемости кода.

    1) отлавливаем POST-запрос;
    2) проверяем наличие всех требуемых параметров; для отсутствующих, возможно, берем какие-то дефолтные значения;
    3) экранируем значения или используем подготовленный запрос.
     
  3. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.818
    Симпатии:
    1.333
    Адрес:
    Лень
    @RedWings
    В этой упаковке что делает функция закрытия соединения ?
    То что находится во функции, будет находиться только там, не имея внешнего доступа. Лишь можно повлиять специальными логическими выводами "из функции", о которых вы должны нам написать. Иначе каким макаром переменная $conn повлияет на другие области всего твоего кода ?
     
  4. RedWings

    RedWings Новичок

    С нами с:
    5 фев 2019
    Сообщения:
    2
    Симпатии:
    0
    Ну я смотрел в гугле как правильно , но еще не до конца разобрался с реализацией)
    Значит mysqli_close($conn) не нужна в конце?
     
  5. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    657
    Нет, но это далеко не единственный косяк ;)