【问题标题】:PHP Form Post and Insert into multiple rowsPHP表单发布并插入多行
【发布时间】:2017-08-05 06:11:50
【问题描述】:

我被难住了。我已经在 Stackoverflow 上查看了多个答案,但就是不明白。也许我只是什么都没看到。

我正在制作一个家庭世仇游戏,并使用 PHP 和 MySQL 数据库来存储和检索信息。对于 Fast Money Round,我有一个数据库,其中有一个名为“FastMoney1”的表,我使用 HTML5 表单和 PHP 将表单中的数据发布到该表,该表有两列:答案和分数

我正在通过 for 循环运行我的查询,但它没有向表中发布任何内容。我想知道我做错了什么。

HTML:

<form method="post" class="form-horizontal">
    <div class="form-group">
        <div class="col-xs-9">
            <input type="text" class="form-control" id="question1answer" name="answer[0]" placeholder="Question 1">
        </div>
        <div class="col-xs-3">
            <input type="number" class="form-control" id="question1score" name="score[0]" placeholder="0">
        </div>
    </div>
    <div class="form-group">
        <div class="col-xs-9">
            <input type="text" class="form-control" id="question1answer" name="answer[1]" placeholder="Question 2">
        </div>
        <div class="col-xs-3">
            <input type="number" class="form-control" id="question1score" name="score[1]" placeholder="0">
        </div>
    </div>
    <div class="col-xs-4 col-xs-offset-4" align="center">
        <input type="submit" class="btn btn-success" name="Submit" />
    </div>
</form>

PHP:

<?php

    if(isset($_POST['submit'])){

        require "config.php";

        for ($i = 0; $i<count($_POST); $i++){
            $answer = $_POST['answer'][$i];
            $score = $_POST['score'][$i];
            $sql = "INSERT INTO `fastMoney1`(`answer`, `score`) VALUES ('$answer','$score')";
            if ($conn->query($sql) === TRUE) {
                echo "";
            } else {
                echo $conn->error;
            }
        }

        $conn->close();
        echo "<meta http-equiv='refresh' content='0'>";

    }

?>

所有这些都存在于同一个 PHP 页面上,这就是为什么我没有附加到表单的操作。

config.php 是一个调用主机、用户名、密码和数据库并打开连接的包含文件

【问题讨论】:

  • 你有什么错误吗?
  • 不,我不是……

标签: php mysql database forms post


【解决方案1】:

请记住,PHP 变量区分大小写,您在表单中指定了名称 Submit,而在 php 中您正在检查 if(isset($_POST['submit'])){,但它永远不会成为真的。 改成

if(isset($_POST['Submit'])){ //<----- S in upper case

编辑 您还需要将循环更改为

for ($i = 0; $i<count($_POST['answer']); $i++){

【讨论】:

  • 我其实一共有6对字段,答案和分数——但是提交只是将前三个发布到数据库,而不是全部六个。
【解决方案2】:

查看您的 sql 语句,您不需要在表名和列名中插入与号 INSERT INTO fastMoney1(answer, score) VALUES ('$answer','$score')

【讨论】:

    【解决方案3】:
     <input type="submit" class="btn btn-success" name="submit" />
    

    我变了

     name="Submit"
    

     name="submit"
    

    “提交”到“提交” ----->“S”到“s”

    效果很好

    【讨论】:

    • 我在问题中说明了原因。因为我有 isset($_POST['submit']) 并且 php 和 html 位于同一页面上
    猜你喜欢
    • 2014-04-04
    • 2012-07-04
    • 2018-07-03
    • 2020-05-08
    • 2013-07-08
    • 2013-10-05
    • 2013-09-24
    • 2020-02-24
    • 2022-11-18
    相关资源
    最近更新 更多