【问题标题】:PHP/MySQL; For loop to to insert rows only adds onePHP/MySQL; For 循环插入行只添加一个
【发布时间】: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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2013-07-27
    • 1970-01-01
    • 2015-01-20
    • 2014-12-07
    • 2015-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多