PHP / MySQL的;要循环到插入行只添加一个

时间:2014-05-31 02:25:02

标签: php mysql sql for-loop mysqli

我使用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代码中的语法错误,或者是关于表本身的错误。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

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

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

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