【问题标题】:isset($_POST['submit']) doesn't work but $_SERVER["REQUEST_METHOD"] == "POST" doesisset($_POST['submit']) 不起作用,但 $_SERVER["REQUEST_METHOD"] == "POST" 起作用
【发布时间】:2017-12-12 16:33:32
【问题描述】:

我正在尝试让我的按钮工作。它适用于$_SERVER["REQUEST_METHOD"] == "POST",但不适用于isset($_POST['submit'])$_SERVER["REQUEST_METHOD"] == "POST" 的问题在于它给了我多个条目。

我的代码:

    if(isset($_POST['submit']))
    {
    $server_address = $_POST['submitServerIp'];
    $server_port = $_POST['submitServerPort'];


    $Query = new SourceQuery( );

    try
    {
        $Query->Connect( $server_address, $server_port, SQ_TIMEOUT, SQ_ENGINE );

        $data = $Query->GetInfo( );
    }
    catch( Exception $e )
    {
        echo $e->getMessage( );
        $error = true;
    }
    $Query->Disconnect( );
if($error == false)
{
    $errorMessage = "false";
    // Create connection
    $conn = mysqli_connect($servername, $username, $password, $dbname);
    // Check connection
    if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

    $stmt = $conn->prepare("INSERT INTO Servers (ipaddress, port) VALUES (?, ?)");
    $stmt->bind_param("ss", $ipaddress, $port);

    $ipaddress = $_POST['submitServerIp'];
    $port = $_POST['submitServerPort'];
    $stmt->execute();

    $stmt->execute();

    $stmt->close();
    mysqli_close($conn);
}
}
?>

HTML:

<form method="post" action="">
<div class="container-fluid search-top">
    <div class="addContainer">
            <div class="addContainer col-sm-12">
                <p class="searchText"><?php echo htmlspecialchars($errorMessage);?></p>
                <div class="container col-md-8 col-md-offset-2 col-sm-10 col-sm-offset-1 col-xs-12 ">
                    <div class="input-group stylish-input-group">
                    <input type="text" name="submitServerIp" class="form-control input-lg" placeholder="Hostname/IP" style="border:0;">
                    <input type="text" name="submitServerPort" class="form-control input-lg" placeholder="Port" style="border:0;">
                        <span class="input-group-addon">
                        <button class="btn btn-primary" type="submit" value="submit">
                            <span class="fas fa-plus" aria-hidden="true"></span>
                        </button>
                        </span>
                    </div>
                </div>
            </div>
    </div>

我可以不按我使用按钮的方式使用按钮还是我做错了什么?

【问题讨论】:

  • 您需要将name="submit"添加到您的提交按钮,这将解决您的问题。
  • 你的名字在哪里='submit'?
  • 天啊...我怎么忘了这个。有用。干杯 :) 不过仍然在数据库中给出两个条目。
  • 你给$stmt-&gt;execute();打了两次电话……

标签: php html


【解决方案1】:

当您使用$_POST[KEY] 变量时,键实际上是您提交的表单元素的name,而不是value

要解决您的问题,只需将name="submit" 添加到您的提交按钮即可。

<button class="btn btn-primary" type="submit" name="submit" value="submit">
    <span class="fas fa-plus" aria-hidden="true"></span>
</button> 

对于数据库中的 2 个条目,您有一个额外的 execute() 函数被调用。

    $stmt = $conn->prepare("INSERT INTO Servers (ipaddress, port) VALUES (?, ?)");
    $stmt->bind_param("ss", $ipaddress, $port);

    $ipaddress = $_POST['submitServerIp'];
    $port = $_POST['submitServerPort'];
    $stmt->execute();

    $stmt->execute();

    $stmt->close();
    mysqli_close($conn);

您应该删除上面写着$stmt-&gt;execute(); 的行之一。

【讨论】:

  • 谢谢 :) Facepalm。它修复了它,但是,它仍然在数据库中提供了两个条目。你知道为什么会这样吗?
  • 啊啊啊啊。感谢更新。 :D 救了我,现在已经坐了 4 个小时了。
  • @Leyer 如果我的(或任何其他)答案对您有所帮助,请检查答案旁边的小复选标记以将其标记为正确。 :)
  • 谢谢 :) 我之前试过,但它说我必须等待 10 分钟。
  • @Leyer 好吧,明白了。干杯!
猜你喜欢
  • 1970-01-01
  • 2016-04-14
  • 2021-07-22
  • 2010-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-04
相关资源
最近更新 更多