Подготовленное утверждение: столбец не может быть нулевым

0

Я пытался выяснить, почему я получил эту ошибку в своем подготовленном заявлении, но я не могу решить проблему. Я получаю сообщение об ошибке:

Notice: Undefined index: tipimage in C:\xampp\htdocs\Matt\addtip.php on line 68
ERROR: Could not execute query: INSERT INTO tips (tiptitle, tiptext, tiplink, tipimage) VALUES (?, ?, ?, ?). Column 'tipimage' cannot be null

Все значения в моей базе данных заданы для ввода текста, кроме Id.

....
else {
        /* Attempt MySQL server connection. Assuming you are running MySQL
        server with default setting (user 'root' with no password) */
        $mysqli = new mysqli("localhost", "paul", "pass", "yourcomp");

        // Check connection
        if($mysqli === false){
            die("ERROR: Could not connect. " . $mysqli->connect_error);
        }

        // Prepare an insert statement
        $sql = "INSERT INTO tips (tiptitle, tiptext, tiplink, tipimage) VALUES (?, ?, ?, ?)";

        if($stmt = $mysqli->prepare($sql)){
            // Bind variables to the prepared statement as parameters
            $stmt->bind_param("ssss", $tiptitle, $tiptext, $tiplink, $tipimage);

            // Set parameters
            $tiptitle = $_REQUEST['tiptitle'];
            $tiptext = $_REQUEST['tiptext'];
            $tiplink = $_REQUEST['tiplink'];
            $tipimage = $_REQUEST['tipimage'];

            // Attempt to execute the prepared statement
            if($stmt->execute()){
                $successmsg = "<div class='alert alert-success'>Tip Added Successfully!</div>";
            } else{
                echo "ERROR: Could not execute query: $sql. " . $mysqli->error;
            }
        } else{
            echo "ERROR: Could not prepare query: $sql. " . $mysqli->error;
        }
Теги:

1 ответ

2
Лучший ответ

Вы ищете переменную POST, которая не была отправлена с запросом. Это то, что неизвестное уведомление индекса пытается вам рассказать. Вы не проверяете, существует ли он, прежде чем передавать его в базу данных, поэтому он получает значение null. Просто укажите значение по умолчанию для пустой строки (здесь используется оператор null coalesce), и он будет работать нормально.

$tipimage = $_REQUEST['tipimage'] ?? "";
  • 0
    Разве это не значит, что он всегда вводится в базу данных в виде пустой строки?
  • 0
    Вы смотрели документацию для ?? оператор?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню