WedX - журнал о программировании и компьютерных науках

$mysqli-›prepare возвращает false, если поля данных пусты

В форме есть 4 поля, и 2 из них допускают значение null, поэтому, если пользователь не заполнит эти поля, INSERT завершится ошибкой, так как $mysqli->prepare вернет false.

Адрес электронной почты и номер телефона не являются обязательными в следующей форме.

Адрес электронной почты и номер телефона не являются обязательными

Итак, есть ли способ отправить пустые поля и по-прежнему вставлять данные для других заполненных полей.

function newcontact()
    {
        $mysqli = connect();
        $query = "INSERT INTO contacts( first_name, last_name, email, phone_no, contact_by )Values( '$this->first_name', '$this->last_name',
                    '$this->email', $this->phone, $this->user_id)"; 
        //die( $query );
        $stmt = $mysqli->prepare( $query );
        if( $stmt->execute() )
        {
            $mysqli->close();
            return true;
        }
    }
07.09.2013

  • Почему вы используете $mysqli-›prepare? 07.09.2013
  • я использую его как объект. Функция connect() возвращает новый объект mysqli(.....). 07.09.2013
  • хотя вопрос был в том, зачем ты это используешь 07.09.2013
  • Хорошо, в данный момент я не использую параметр привязки, просто хотел проверить запрос. 07.09.2013
  • продолжайте, используйте параметр привязки, и ошибка исчезнет 07.09.2013

Ответы:


1
  • если пользователь не заполнит эти поля, в запрос будут помещены не NULLS, а пустые строки.
  • и, таким образом, вызвать синтаксическую ошибку, поскольку Values('', '', '', , ) является верной ошибкой.
  • вы используете подготовку неправильно.
  • у вас нет набора отчетов об ошибках mysqli

Добавьте эту строку прямо перед mysqli_connect

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

и заставьте ваш запрос фактически использовать заполнители и привязать параметр.

И все будет работать. Но если нет, вы будете уведомлены о точной ошибке.

07.09.2013
  • я пытаюсь mysqli_report (MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); по какому-то другому запросу, но возвращает логическое значение. Как я могу увидеть фактическое сообщение. 08.09.2013
  • вы должны вызывать этот оператор не по запросу, а только один раз перед соединением. 08.09.2013

  • 2

    при использовании подготовленного оператора вы не вводите значения в запрос, вместо этого вы предоставляете заполнители и привязываете параметры.

    https://php.net/manual/en/mysqli.prepare.php

    если вы хотите поместить значения в запрос, используйте функцию query() https://www.php.net/manual/en/mysqli.query.php

    07.09.2013
    Новые материалы

    Как создать диаграмму градиентной кисти с помощью D3.js
    Резюме: Из этого туториала Вы узнаете, как добавить градиентную кисть к диаграмме с областями в D3.js. Мы добавим градиент к значениям SVG и применим градиент в качестве заливки к диаграмме с..

    Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
    Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

    Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
    В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..


    Для любых предложений по сайту: [email protected]