【发布时间】:2014-07-20 21:00:34
【问题描述】:
我正在使用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 循环运行后调用的,这就是为什么只插入最后一个...
-
不太可能 - 绝对。查看分配给 $sql 的行的末尾
-
我的猜测是,在循环期间,
$sql只是被覆盖,然后在循环之外是mysql_query,它只执行一条语句
标签: php mysql sql for-loop mysqli