为什么这个 Mysql 查询只存储了几个字段并抛出错误消息?

Why is this Mysql query only storing a few fields and throwing error message?

我是 PHP 的新手,正在尝试编写测验应用程序。我的 addquestion.php 文件中有以下代码。但是当我用它来添加问题时,table中只添加了一些列。抛出错误的数据类型为 'text' 或 'varchar'。

<!DOCTYPE html>
<html lang="en">
<head>
 <title>Add new question</title>
 <meta charset="utf-8">
 <meta name="viewport" content="width=device-width initial-scale=1">
 <link rel="stylesheet" href="css/bootstrap.min.css">
 <link rel="stylesheet" href="css/addques.css">
</head>
<body class="text-center">
 <h1>Add question</h1>
 <?php
  session_start();
  //only display the following content to admin
  if($_SESSION['usertype'] == 'admin') {

 ?>
  <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
   <div>
    <label for="topic">Topic</label>
    <select name="topic" id="topic">
     <option value="1">Logical Reasoning</option>
     <!-- removing other options to shorten the code -->
     <option value="37">MS Windows and Office</option>
    
    </select>
   </div>

   <div>
    <label for="Statement">Question Statement</label>
    <input id="" type="text" name="statement">
   </div>
   <div>
    <label for="Option1">Option 1</label>
    <input id="Option1" type="text" name="option1">
   </div>
   <div>
    <label for="Option2">Option 2</label>
    <input id="Option2" type="text" name="option2">
   </div>
   <div>
    <label for="Option3">Option 3</label>
    <input id="Option3" type="text" name="option3">
   </div>
   <div>
    <label for="Option4">Option 4</label>
    <input id="Option4" type="text" name="option4">
   </div>
   <div>
    <label for="correctans">Correct Answer</label>
    <select name="correctans" id="correctans">
     <option value="a">A</option>
     <option value="b">B</option>
     <option value="c">C</option>
     <option value="d">D</option>
    </select>
   </div>
   <div>
    <label for="imagepath">Image URL</label>
    <input id="imagepath" type="text" name="imagepath">
   </div>
   <div>
    <label for="solution">Solution</label>
    <input id="solution" type="textarea" name="solution">
   </div>

   <div>
    
    <input id="submit" type="submit" name="submit" value="Add">
   </div>
  </form>
 <?php
  }
 ?>
 <?php
  // connect to the database
  require_once("connectVars.php");

  $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) or die("Error connecting to database @ addquestion.php");

  
  //set the variables.
  $statement = $_POST['statement'];
  $option1 = $_POST['option1'];
  $option2 = $_POST['option2'];
  $option3 = $_POST['option3'];
  $option4 = $_POST['option4'];
  $correctans = $_POST['correctans'];
  $imageUrl = $_POST['imagepath'];
  $solution = $_POST['solution'];
  $topicId = $_POST['topic'];

 // add the question
  $query_question = "INSERT into questionbank (statement, option1, option2, option3, option4, correctans, topicId,imagepath)
         VALUES ('$statement', '$option1', '$option2', '$option3', '$option4', '$correctans', '$topicId', '$imageUrl')";

  $addQues = mysqli_query($dbc, $query_question) or die("Error adding question");

  // add the solution
  $query_solution = "INSERT into solutions (solution) VALUES('$solution')";
  $addSol = mysqli_query($dbc, $query_solution) or die("Error adding solution");

  mysqli_close($dbc);
 ?>
</body>
</html>

这里的问题不在于查询本身,而在于输入表单的数据。如果它包含单引号,则查询失败。

请注意表单中输入的数据。