首页 > 解决方案 > 一般错误:1366 整数值不正确:INT 类型列的“NULL”

问题描述

我的数据库中有一个 int 列,我根据用户在我的 html\php 代码中选择的下拉菜单更新它:

<select name="regularClass">
  <option value=NULL selected>None</option>
<?php
$sql = "SELECT idClass FROM Class WHERE category='ET'";
$result = $conn->query($sql);
$result = $conn->query($sql);
$row_count = $result->rowCount();
if ($row_count > 0){
while ($row = $result->fetch())
  {
    echo "<option value=".$row['idClass'].">".$row['idClass']."</option>";
  }
}
?>
</select><br><br>
Transportaion:
<input type="radio" name="transportation" value="BUS" checked>Bus</option><br>
<input type="radio" name="transportation" value="KHAS">Khas</option><br>
Bus:
<select id="busDropdown" name="bus">
    <option value=NULL selected>None</option>
    <?php
    $sql = "SELECT busNumber FROM Bus";
    $result = $conn->query($sql);
    $row_count = $result->rowCount();
    if ($row_count > 0){
    while ($row = $result->fetch())
      {
        echo "<option value=".$row['busNumber'].">".$row['busNumber']."</option>";
      }
    }
    ?>
    </select><br><br>

如果没有,我需要用户选择一个公共汽车号码或“无”。我收到错误的问题:

致命错误:未捕获的 PDOException:SQLSTATE [HY000]:一般错误:1366 不正确的整数值:第 1 行的列“Bus_busNumber”的“NULL”

错误是从以下几行引发的:

<?php
if (isset($_POST['save']))
  {

  try{
  $ssn = $_POST['ssn'];
  } catch (DataIntegrityViolationException $e) {
        System.out.println("Student already registered");
    }
  $fullName = $_POST['fullName'];
  $transportation = $_POST['transportation'];
  $qualification = $_POST['qualification'];
  $neighborhood = $_POST['neighborhood'];
  $dob = $_POST['dob'];
  $email = $_POST['email'];
  $bus = $_POST['bus'] ;
  $grade = $_POST['grade'];
  $notes = $_POST['notes'];
  $nationality = $_POST['nationality'];
  $regularClass = (int)$_POST['regularClass'];
  $mobileNumber = $_POST['mobile'];
  $phone = $_POST['phone'];

  $stmt= $conn->prepare("INSERT INTO Student (ssn, name, transportation, qualification, neighborhood, dob, email, Bus_busNumber, grade,note, nationality, Class_idClass, mobile, phone)
    VALUES (:ssn,:fullName,:transportation,:qualification,:neighborhood,:dob,:email,:bus,:grade,:notes,:nationality,:regularClass,:mobileNumber,:phone)
                                ");
  $stmt->bindParam(':ssn',$ssn);
  $stmt->bindParam(':fullName',$fullName);
  $stmt->bindParam(':transportation',$transportation);
  $stmt->bindParam(':qualification',$qualification);
  $stmt->bindParam(':neighborhood',$neighborhood);
  $stmt->bindParam(':dob',$dob);
  $stmt->bindParam(':email',$email);
  $stmt->bindParam(':bus',$bus);
  $stmt->bindParam(':grade',$grade);
  $stmt->bindParam(':notes',$notes);
  $stmt->bindParam(':nationality',$nationality);
  $stmt->bindParam(':regularClass',$regularClass);
  $stmt->bindParam(':mobileNumber',$mobileNumber);
  $stmt->bindParam(':phone',$phone);
  $stmt->execute();
  $stmt->CloseCursor();
  exit;
}
?>

我知道这个错误来自空值,这是该列的默认值!我不想更改严格模式(我在阅读许多帖子后找到的解决方案)我需要解决这个问题。请帮我解决这个问题..

标签: phphtmlmysql

解决方案


推荐阅读