繁体   English   中英

如何在php的外键上允许NULL值

[英]How to allow NULL value on foreign key on php

美好的一天。 我正在寻求有关如何处理代码的帮助:PHP部分:

<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){

  $student = $_POST['student']; 
  $lecture = $_POST['lecture'];
  $room = $_POST['room'];

  $students = mysqli_query($con,"SELECT * FROM students WHERE student='$student'");
  $lectures = mysqli_query($con,"SELECT * FROM lectures WHERE lecture='$lecture'");
  $rooms = mysqli_query($con,"SELECT * FROM rooms WHERE room='$room'");

  $student_row = mysqli_fetch_array($students);
  $lecture_row = mysqli_fetch_array($lectures);
  $room_row = mysqli_fetch_array($rooms);

我要在这部分中做的是,如果房间输入上没有任何条目,则在参考表的room_id列中插入null值:

  if($student != $student_row['student']) {
    $addStudent = mysqli_query($con,"INSERT IGNORE INTO students (student) VALUES ('$student')");
    $studentID = mysqli_insert_id($con);
  }else{
    $studentID = $student_row['student_id'];
  };

  if($lecture != $lecture_row['lecture']) {
    $addLecture = mysqli_query($con,"INSERT IGNORE INTO lectures (lecture) VALUES ('$lecture')");
    $lectureID = mysqli_insert_id($con);
  }else{
    $lectureID = $lecture_row['lecture_id'];
  };

  if($room != $room_row['room']) {
    $addRoom = mysqli_query($con,"INSERT IGNORE INTO rooms (room) VALUES ('$room')");
    $roomID = mysqli_insert_id($con);
  }else{
    $roomID = $room_row['room_id'];
  };

我认为这是需要更改的部分:

  $addClass = mysqli_query($con,"INSERT INTO classes (student_id,lecture_id,room_id) VALUES ('$studentID','$lectureID','$roomID')");

  if($addClass){
    echo 'Success';
  }else{
    echo 'Error: '.mysqli_error($con);
  };
};
?>

HTML部分:

<html>
<title>Add Class</title>
<body>
  <form name="Add Class" method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
    Student: <input type="text" name="student" />
    </br></br>
    Lecture: <input type="text" name="lecture" />
    </br></br>
    Room: <input type="text" name="room" />
    </br></br>
    <input type="submit" value="Add Class">
  </form>
</body>
</html>

谢谢。

您可以简单地将NULL作为值插入。 像这样:

if(empty($room))
  $room = "NULL";

就在mysqli插入之前。 确保您实际上传递了字符串null,非空或0。

哦,您显然需要确保该列未标记为NOT NULL

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM