Что за ошибка в php скрипте при обработке insert?

Не пойму в чем дело...
Есть код формы на странице:
<form role="form" id="MailForm" name="postaddress" action="save.php" method="post">
<div class="form-group row"> <!-- Заголовок сайта -->
<label for="male-input" class="col-2 col-form-label my-auto form-label">Ваш E-mail</label>
<div class="col-5 my-auto">
<input class="col-12 form-control" type="text" value="" id="male-input" name="MailBox">
 </div>
 <span id="male-input" class="col-5 text_after_input my-auto">Данные не будут использованы для спам-рассылок</span>
 </div>
 <button id="send-mail" class="butn_send">Отправить</button>
 </form>

Выборка данных из поля MailBox и вставка их в базу данных осуществляется скриптом save.php:
<?php
        require_once ('config.php'); //Забираем константы, прописанные для базы данных

        $MailBox = $_POST['MailBox'];

        $bd_link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); // соединяемся с базой данных
        if (mysqli_connect_errno()) { // проверка соединения
                printf("Не удалось подключиться: %s\n", mysqli_connect_error());
                exit();
        }
        if (!$bd_link->set_charset("utf8")) { // изменение набора символов на utf8
                printf("Ошибка при загрузке набора символов utf8: %s\n", $bd_link->error);
                exit();
        }
        $bd_insert_query = "INSERT INTO " . DB_TABLE . " (mailbox) VALUES ('" . $MailBox . "')";
        $result = mysqli_query($bd_link, $bd_insert_query);

        if($result == 'true') {
                echo "Ваши данные успешно добавлены";
                }
                else {
                        echo "Ваши данные не добавлены";
                }
        //mysqli_close($result); // закрываем результаты запроса
        mysqli_close($bd_link); // закрываем подключение
?>

И вот после выполнения скрипта срабатывает else в последнем if: "Ваши данные не добавлены".
Уперся уже на 2 часа, не вижу ошибки
  • Вопрос задан
  • 104 просмотра
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
if($result == 'true') {...

Если так проверять, можно долго ждать пока результатом ответа будет строка 'true'.

UPD:
$bd_insert_query = "INSERT INTO " . DB_TABLE . " (mailbox) VALUES ('" . $MailBox . "')";
var_dump($bd_insert_query); // копируем и вставляем в базу руками, смотрим ответ, возможно понимаем что запрос кривой.
$result = mysqli_query($bd_link, $bd_insert_query);
var_dump($result); // смотрим что на самом деле произошло в запросе.

вообще с таким стилем программного кода var_dump должна стать вашей любимой функцией.

Из визуальной части - сходу не вижу где определена DB_TABLE, возможно она вообще вне видимости скрипта.
ну и по мелочи:
имена полей таблиц обычно заключают в апострофы: (`mailbox`);
посмотрите как работать с подготовленными запросами, это сильно лучше чем вставлять сырые данные в запрос.
$bd_insert_query = "INSERT INTO " . DB_TABLE . " ('ID', 'mailbox') VALUES ('LAST_INSERT_ID(), " . $MailBox . "')";
вообще треш и угар, так делать не нужно. Тем более если поле id автоинкрементное. Тем более с ошибкой в полях ввода.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы