PHP / MySQL;用于插入行的For循环只添加一行


PHP/MySQL; For loop to to insert rows only adds one

我使用for循环向表Beds添加特定数量的行作为占位符。代码不会抛出任何错误,但是只有最后编号的床出现在数据库中。例如:如果你想增加10张床,只会增加10张床。

这是我使用的for循环:

$roomName = mysqli_real_escape_string($con, $_POST['roomName']);
$numberBeds = mysqli_real_escape_string($con, $_POST['numberBeds']);
for($x=1; $x <= $numberBeds; $x++) {
    $sql = "INSERT INTO Beds (roomName, bedNumber, patientID) VALUES('$roomName','$x', NULL)";
}

随附表格:

DROP TABLE IF EXISTS `ChildrensHospital`.`Beds` ;
CREATE TABLE IF NOT EXISTS `ChildrensHospital`.`Beds` (
    `roomID` INT(20) NOT NULL AUTO_INCREMENT,
   `bedNumber` INT(10) NOT NULL,
    `patientID` INT(20) NULL,
    PRIMARY KEY (`roomID`, `bedNumber`),
    INDEX `fk_Beds_PatientPersonalInformation1_idx` (`patientID` ASC),
    CONSTRAINT `fk_Beds_PatientPersonalInformation1`
    FOREIGN KEY (`patientID`)
    REFERENCES `ChildrensHospital`.`PatientPersonalInformation` (`patientID`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
    ENGINE = InnoDB;

我不确定这是一个语法错误在我的PHP代码,或一些关于表本身。

代码的问题是您没有执行您的查询。试试这样:

for($x=1; $x <= $numberBeds; $x++){
    $sql = "INSERT INTO Beds (roomName, bedNumber, patientID) VALUES('$roomName','$x', NULL)";
    mysqli_query($con,$sql);
}

我猜你只在循环之后执行查询,因此,当然只有最后一个查询被执行,而不是每个。