Отправка данных через html форму в MySQL

212
08 ноября 2017, 03:25

Доброго времени суток. Имеется WAMP сервер, файл index.php в котором содержится код:

<html>
<head>
</head>
<body>
    <form method="POST" action="bd1.php">
        <input name="name" type="text" placeholder="Имя"/>
        <input name="text" type="text" placeholder="Текст"/>
        <input type="submit" value="Отправить"/>
    </form>
</body>
</html>

и файл bd1.php в котором содержится код

    <?php
if (isset($_POST['name']) && isset($_POST['text'])) {
    $con = mysqli_connect("127.0.0.1", "root", "", "rf", "3306");
    mysqli_set_charset($con, "utf8");
    if (mysqli_connect_errno()) {
        echo "провал" . mysqli_connect_error();
    }
    $query1 = "INSERT INTO `cat` VALUES (`name`, `text`);";
    $result1 = mysqli_query($con, $query1);
    if ($result1 = 'true') {
        echo "Информация занесена в базу данных";
    } else {
        echo "Информация не занесена в базу данных";
    }
    $query = "SELECT * FROM  cat;"; 
    $result = mysqli_query($con, $query);
    echo '<table border="1">';
    echo '<thead>';
    echo '<tr>';
    echo '<th>N</th>';
    echo '<th>Ник</th>';
    echo '</tr>';
    echo '</thead>';
    echo '<tbody>';
    while ($data = mysqli_fetch_array($result)) {
        echo '<tr>';
        echo '<td>' . $data['id'] . '</td>';
        echo '<td>' . $data['vid'] . '</td>';
        echo '</tr>';
    }
    echo '</tbody>';
    echo '</table>';
}
 mysql_close($connect_to_db);
?>

Загвоздка заключается в том что данные, переданные через форму не попадают в базу данных. Сообщение об ошибке не выводится. Пишется что: "Информация занесена в базу данных" и таблица с данными уже существующими в ней, занесенными через phpMyAdmin вручную. Подскажите, где я допустил неточность.

P.S. Если в строке

$query1 = "INSERT INTO cat VALUES (name, text);";

вставить скажем цифры, вместо глобальных переменных, то информация попадет в БД.

Answer 1

Так вам синтаксис учить надо и основы PHP.

Вам нужно данные с $_POST сохранять, но сначала хотя бы немного защиты:

$name = mysqli_real_escape_string($_POST['name']);
$text = mysqli_real_escape_string($_POST['text']);
$query1 = "INSERT INTO `cat` VALUES ($name, $text);";
$result1 = mysqli_query($con, $query1);

Но лучше сразу советую переходить на PDO.

Answer 2

Вот тут вам необходимо передать полученные данные:

$query1 = "INSERT INTO `cat` VALUES (`name`, `text`);";

Это можно сделать так:

$name = $_POST['name'];
$text = $_POST['text'];
$query1 = "INSERT INTO `cat` VALUES ($name, $text);";
READ ALSO
Никак не работает функция flush

Никак не работает функция flush

На серверах с установленной Vestacp не работает функция flush, перепробовал уже все возможные варианты комбинацийВ php

207
Internal server error 500 при попытке обновить БД ajax json php js

Internal server error 500 при попытке обновить БД ajax json php js

Проблема заключается в функции checkEmail, не могу понять только в чем именно проблема

250
Сформировать изображения JPG на PHP

Сформировать изображения JPG на PHP

Дано: файлы форматов jpg (jpeg) и png разных размеров (небольшие, порядка 300Кб максимум)

253