【问题标题】:$_GET value empty inside isset if statement$_GET 值在 isset if 语句中为空
【发布时间】:2015-10-24 21:52:46
【问题描述】:

我正在创建一个消息传递系统并将消息从表单存储到数据库中。

<form action = "sendmsg.php" method="POST">
            <input type="text" placeholder="Enter subject" name="subject"><br/><br/>
            <textarea style="height:300px;width:450px;" maxlength="50" placeholder="Enter Message" name="message"></textarea><br/><br/>
            <input type="submit" name="submitmsg" value="Send Message"/>
            <?php
            require("dbcon.php");

            if(isset($_POST['submitmsg'])){
                $to = $_GET['id']; 
                $subject = $_POST['subject'];
                $message = $_POST['message'];
                $sql = "INSERT INTO msg VALUES ('','$to','NOW()','$subject','$message')";
                $send = mysqli_query($con, $sql);
                echo "Done";
                echo $to;
            }

我的问题是一旦选择了提交按钮,$_GET['id'] 值为空。 sql 查询执行但 $_GET['id'] 为空。我尝试了各种方法让 $_GET['id'] 像使用双 if 语句来检查 $_GET 和 $_POST 一样工作,但无论如何都没有用。

我对 php 有点陌生,并且断断续续地这样做。

有什么建议吗?

【问题讨论】:

  • $_GET['id'] 正在从包含表中用户列表的另一个页面中提取。以下是相关代码: "?>
  • id 必须在查询字符串中传递,以便 $GET 超级全局获取它!

标签: php mysql mysqli get


【解决方案1】:

您正在通过表单发送数据,但您没有发送任何 URI 信息以供 $_GET 数组解析。此外,我假设 HTML 和 PHP 位于不同的页面上,如果不是,您将必须执行 PHP_SELF 作为您正确回发到自身的操作。

您需要将此添加到表单操作中

?id=<?php echo $id ?>

像这样:

<form action = "sendmsg.php?id=<?php echo $id ?>" method="POST">
        <input type="text" placeholder="Enter subject" name="subject"><br/><br/>
        <textarea style="height:300px;width:450px;" maxlength="50" placeholder="Enter Message" name="message"></textarea><br/><br/>
        <input type="submit" name="submitmsg" value="Send Message"/>
        <?php
        require("dbcon.php");

        if(isset($_POST['submitmsg'])){
            $to = $_GET['id']; 
            $subject = $_POST['subject'];
            $message = $_POST['message'];
            $sql = "INSERT INTO msg VALUES ('','$to','NOW()','$subject','$message')";
            $send = mysqli_query($con, $sql);
            echo "Done";
            echo $to;
        }

【讨论】:

  • 我们都必须从某个地方开始
  • @ioneyed 解决了!非常感谢 :D 我的 php 和 html 在一个页面上。不知道需要 ?id= 来解析 id...猜猜又要回到看书了。
  • 我还希望通过使用 api 将 UI 与后端分开。另外我建议阅读 MVC,例如代码点火器或蛋糕,因为它可能会导致更好的实践。
  • @ioneyed 啊,你说得对。我希望开始使用框架......但我还没有接触 PHP 面向对象......尽管知道 java。您是否建议先学习 PHP 面向对象,然后再学习框架?
  • 取决于你的学习方式和激励你的因素。我是一个快速完成新主题的肮脏 Poc,然后将这些知识推入项目的人。我个人不能在不学习的情况下简单地阅读大量的文档,所以我会同时做这两件事。拿起一个框架(我喜欢代码点火器)并使用它运行。一路走来,您将了解 OO php。此外,如果您有 Java 背景,您就会了解 OO 的基础知识,这只是在 php 中执行的语义和最佳实践。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-16
  • 1970-01-01
  • 2021-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-03
相关资源
最近更新 更多