Почему я не могу загрузить файл в свою базу данных? - PullRequest
0 голосов
/ 20 октября 2019

Мне нужно создать форму о компаниях с парой информации (как вы можете видеть ниже), но каждый раз, когда я хочу загрузить новую строку, я получаю 1 в каждом кулоне.

Итак, я хочу знать, что мне делать с моим кодом?

        <?php 
        include('mysql.php');


        if ($_POST) {
                 $companyName = isset($_POST['cname']);
                 $address = isset($_POST['address']);
                 $phoneNubmber = isset($_POST['phoneNubmber']);

                      $result = $connection->query("INSERT INTO `companies` 
                      (`name`, `email`, `phone`) VALUES('$cegnev ', 
                     '$address', '$pn')");

    header('Location: http://localhost/phptest/test.php');

    mysqli_close($connection);
}


?>
<!DOCTYPE html>
<html>
    <head>
        <title>Form</title>
        <meta charset="UTF-8">
        <link rel="stylesheet" tpe="text/css" href="urlapcss.css">
    </head>
    <body>
    <div id="container">
        <form id="reg" action="test.php" method="post">
            <fieldset>
                <legend>Form</legend>
                <ol>
                <li>
                        <label for="cname">Name of the company<em>*</em></label>
                        <input id="cname" type="text"  name="cname"/>
                    </li><li>
                        <label for="address">Email<em>*</em></label>
                        <input id="address" type="text"  name="address"/>
                    </li><li>
                        <label for="phoneNubmber">Phone number<em>*</em></label>
                        <input id="phoneNubmber" type="text" name="phoneNubmber" />
                    </li>
                </ol>
            </fieldset>
            <input type="submit" value="OK"/>
        </form>
    </div>
    </body>
</html>

Вот таблица.

кстати, mysql.php, если вам интересно, что содержит этот файл .php:

<?php
$host = "localhost";
$userName = "root";
$password = "";
$DBname = "hgeza06";

$connection = new mysqli($host, $userName, $password, $DBname);
if ($connection->connect_error) {
    die("Error");
} else {
    echo "Succes!";
}



?>

Ответы [ 2 ]

1 голос
/ 20 октября 2019

Для начала, имена ваших переменных не согласованы. Вы создаете переменную с именем $companyName и затем пытаетесь использовать ее как $cegnev. Та же проблема с вашей переменной $phoneNubmber (которая также содержит опечатку). Используйте переменные, которые вы определяете.

После того, как это исправлено ... Это возвращает логическое (true / false) значение:

isset($_POST['cname'])

Таким образом, вы буквально вставляете true и false значений в вашу базу данных, которые интерпретируются как 1 и 0. Получите фактические значения:

$companyName = $_POST['cname'];

Используйте isset(), чтобы условно определить, что вы хотите сделать, если значение установлено или не установлено, но не используйте его, чтобы попытаться получить само значение.

Наконец, и это важно , ваш код широко открыт * от 1022 * до SQL-инъекция . (Или в любом случае, и только по стечению обстоятельств и ошибкам он не в настоящее время открыт для него.) большая информация здесь о том, что с этим делать. Это важно, потому что уязвимости в SQL-инъекциях являются одновременно серьезной дырой в безопасности (и, следовательно, плохой привычкой разрешать продолжать), а также очень распространенным источником ошибок и неожиданного поведения в коде.

1 голос
/ 20 октября 2019

isset($_POST['cname']) - вернет 1, если у вас есть $_POST['cname'] или 0, если у вас его нет.

Лучшим способом будет:

$companyName = isset($_POST['cname']) ? $_POST['cname'] : '' ; //add a empty value if is not filled
$address = isset($_POST['address']) ? $_POST['address'] : '';
$phoneNubmber = isset($_POST['phoneNubmber']) ? $_POST['phoneNubmber'] : '';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...