提交到SQL数据库时发生PHP错误

提交到SQL数据库时发生PHP错误,php,sql,Php,Sql,请找人帮忙。我是php新手,我的课程需要我将表单数据保存到sql数据库中。我有下面的代码,它创建了我的错误消息“出错了”。我在网上学习,我的讲师在帮助我方面没有什么用处。谁能告诉我哪里出了问题 我的数据库在别处读写正常 <?php $page_title = "Login Page"; session_start(); include('header.php'); require_once("validation_functions.php"); require_once('func

请找人帮忙。我是php新手,我的课程需要我将表单数据保存到sql数据库中。我有下面的代码,它创建了我的错误消息“出错了”。我在网上学习,我的讲师在帮助我方面没有什么用处。谁能告诉我哪里出了问题

我的数据库在别处读写正常

<?php

$page_title = "Login Page";

session_start();

include('header.php');
require_once("validation_functions.php");
require_once('functions.php');
require_once('connection.php');

// Check if form was submitted
if (isset($_POST['submit'])) {

    // Remove whitespace from beginning and end of values
    $title = trim($_POST["Title"]);
    $director = trim($_POST["Director"]);
    $producer = trim($_POST["Producer"]);
    $running_time = trim($_POST["Running"]);
    $starring = trim($_POST["Starring"]);
    $distributor = trim($_POST["Distributor"]);

    // Escape strings and filter input to prevent SQL injection
    $title = mysqli_real_escape_string($connection, $title);
    $director = mysqli_real_escape_string($connection, $director);
    $producer = mysqli_real_escape_string($connection, $producer);
    $starring = mysqli_real_escape_string($connection, $starring);
    $distributor = mysqli_real_escape_string($connection, $distributor);
    $running_time = intval($running_time);

    if (isset($_POST["Rel"])) { $release = $_POST["Rel"]; }
    if (isset($_POST["Genre"])) { $genre = $_POST["Genre"]; }
    if (isset($_POST["Rating"])) { $rating = $_POST["Rating"]; }

    $form_errors = false;

    // Check if fields are blank
    if (is_blank($title) || is_blank($director) || is_blank($producer) || is_blank($release) || is_blank($running_time) || is_blank($starring) || is_blank($distributor)) {
        $blank_message = "<p class='error-msg'>All fields are required.</p>";
        $form_errors = true;
    }

    // Check if running time is a valid number
    if (isset($running_time) && !filter_var($running_time, FILTER_VALIDATE_INT)) {
        $number_message = "<p class='error-msg'>Running time is not a valid number.</p>";
        $form_errors = true;
    }

    // Check if movie already exists
    if (record_exists("SELECT * FROM Movie WHERE Movie.Title = '{$title}'")) {
        $exists_message = "<p class='error-msg'>This movie already exists in the database.</p>";
        $form_errors = true;
    }


    if ($form_errors == false) {

        $insert_movie = "INSERT INTO Movie (Title, Director, Producer, Rel, Running, GenreID, Starring, Distributor, Rating) VALUES ('{$title}', '{$director}', '{$producer}', '{$release}', '{$running_time}'', '{$genre}', '{$starring}', '{$distributor}', '{$rating}')";

        if (mysqli_query($connection, $insert_movie)) {
            $movie_id = mysqli_insert_id($connection);


            $success_message = "<p class='success-msg'>The movie has been successfully added to the database.</p>";
        }
        else {
            $error_message = "<p class='error-msg'>Something went wrong. Please try again.</p>";
        }
    }
}

//php code ends here 
?>


     <!--    // PUT ERRORS HERE-->
<?php if (isset($blank_message)) { echo $blank_message; } ?>
<?php if (isset($number_message)) { echo $number_message; } ?>
<?php if (isset($date_message)) { echo $date_message; } ?>
<?php if (isset($exists_message)) { echo $exists_message; } ?>
<?php if (isset($success_message)) { echo $success_message; } ?>
<?php if (isset($error_message)) { echo $error_message; } ?>

      <form action="<?php htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post" enctype="multipart/form-data" id="movieinput">
          Title:<br>
          <input type="text" name="Title" placeholder="e.g. Aliens" data-validation="required" value="<?php if (isset($title)) { echo $title; } ?>"><br>
          Director:<br>
          <input type="text" name="Director" placeholder="e.g. Ridley Scott" data-validation="required" value="<?php if (isset($director)) { echo $director; } ?>"><br>
          Producer:<br>
          <input type="text" name="Producer" placeholder="e.g. Gale Ann Hurd" data-validation="required" value="<?php if (isset($producer)) { echo $producer; } ?>"><br>
          Release Date:<br>
          <input type="date" name="Rel" format="yyyy/mm/dd" value="<?php if (isset($date)) { echo $date; } ?>"><br>
          Running Time (mins):<br>
          <input type="number" pattern=".{1,3}" name="Running" placeholder="e.g. 137" data-validation="required" value="<?php if (isset($running)) { echo $running; } ?>"><br>
          Genre:<br><select name="Genre" value="<?php if (isset($genre)) { echo $genre; } ?>"><br>>
            <option value="drama" name="drama">Drama</option>
            <option value="documentary" name ="documentary">Documentary</option>
            <option value="scifi" name="scifi" selected>Sci-Fi</option>
            <option value="comedy" name="comedy">Comedy</option>
              <option value="biopic" name ="biopic">Biopic</option>
              <option value="horror" name="horror">Horror</option>
    </select><br>
          Starring:<br>
          <input type="text" name="Starring" placeholder="e.g. Sigourney Weaver, Michael Biehn, William Hope" value="<?php if (isset($starring)) { echo $starring; } ?>"><br>
          Distributor:<br>
          <input type="text" name="Distributor" placeholder="e.g. 20th Century Fox" data-validation="required" value="<?php if (isset($distributor)) { echo $distributor; } ?>"><br>
          Rating:<br><select name="Rating" value="<?php if (isset($rating)) { echo $rating; } ?>"><br>>>
          <option
            value="one">1
          </option>
          <option
            value="two">2
          </option>
          <option
            value="three">3
          </option>
          <option
            value="four">4
          </option>
          <option
            value="five">5
          </option>
          </select><br>
          <br>
          <input type="submit" name="submit" value="Submit"/>
      </form>




<script> </script>

您正在使用php中的SQL数据库,并使用
mysqli\u query()
函数来插入,这肯定不起作用。你必须使用PDO。访问SQL数据库。

使用此选项而不是

>  $insert_movie = "INSERT INTO Movie (Title, Director, Producer, Rel,
> Running, GenreID, Starring, Distributor, Rating) VALUES ('$title',
> '$director', '$producer', '$release', '$running_time', '$genre',
> '$starring', '$distributor', '$rating')";

在这种情况下,以下一些可能性将导致此问题

  • 输入类型与数据库表中的列数据类型不匹配
  • 用于插入到表中的必需参数
  • 一个确保INSERT查询中没有问题的建议。只需在浏览器中打印insert语句并在DB中手动执行即可

        $insert_movie = "INSERT INTO Movie (Title, Director, Producer, Rel, Running, GenreID, Starring, Distributor, Rating) VALUES ('{$title}', '{$director}', '{$producer}', '{$release}', '{$running_time}'', '{$genre}', '{$starring}', '{$distributor}', '{$rating}')";
    
        echo $insert_movie; exit;
    
    尝试此操作,如果insert语句中没有问题,则将继续调试


    干杯

    谢谢你,尼克。试过了,还是没有运气:-(谢谢,苏德加-它正确地回显到屏幕上。
        $insert_movie = "INSERT INTO Movie (Title, Director, Producer, Rel, Running, GenreID, Starring, Distributor, Rating) VALUES ('{$title}', '{$director}', '{$producer}', '{$release}', '{$running_time}'', '{$genre}', '{$starring}', '{$distributor}', '{$rating}')";
    
        echo $insert_movie; exit;