【问题标题】:If(isset)$_POST troubleif(isset)$_POST 麻烦
【发布时间】:2016-04-03 20:36:00
【问题描述】:

我真的在与这个问题作斗争,我已经尝试了我能找到的每一个 youtube / google 页面,似乎没有任何东西可以解决这个问题。

点击提交时,数据库仅收集“idContactForm”,但不收集其余部分(姓名/电子邮件/主题/消息)

我已经尝试了使用 if(isset)$_POST 行可以找到的所有内容,但我似乎总是在 ($name / $email / $subject / $message) 上收到“未定义索引:”错误

我做错了什么?

 <?php

    include 'config.php';

    if (!isset($_POST['submitted'])) {

        $name = trim(mysqli_escape_string($conn,$_POST['Name']));
        $email = trim(mysqli_escape_string($conn,$_POST['Email']));
        $subject = trim(mysqli_escape_string($conn,$_POST['Subject']));
        $message = trim(mysqli_escape_string($conn,$_POST['Message']));

    } else {
    ## connect mysql server
        $mysqli = new mysqli('localhost', 'root', '******', 'tomepublications');
        # check connection
        if ($mysqli->connect_errno) {
            echo "<p>MySQL error no {$mysqli->connect_errno} : {$mysqli->connect_error}</p>";
            exit();
        }


            # insert data into mysql database
            $sql = "INSERT  INTO `contactform` (`idContactForm`, `Name`, `Email`, `Subject`, `Message`) 
                    VALUES (NULL, '{$name}', '{$email}', '{$subject}', '{$message}')";

            if ($mysqli->query($sql)) {
                //echo "New Record has id ".$mysqli->insert_id;
                echo "<p>Registred successfully!</p>";
            } else {
                echo "<p>MySQL error no {$mysqli->errno} : {$mysqli->error}</p>";
                exit();
            }
        }

    ?>  

HTML

 <form method="post" action="contactf.php">
                                    <div class="form-group">
                                        <input type="text" name="name" id="Name" class="form-control" placeholder="Name" required>
                                    </div>
                                    <div class="form-group">
                                        <input type="email" name="email" id="Email"class="form-control" placeholder="Email" required>
                                    </div>
                                    <div class="form-group">
                                        <input type="text" name="subject" id="Subject"class="form-control" placeholder="Subject" required>
                                    </div>
                                    <div class="form-group">
                                        <textarea name="message" class="form-control" id="Message" rows="15" placeholder="Message" required></textarea>
                                    </div>
                                    <input type="hidden" name="submitted" value="true">
                                    <input type="submit" value="submit" class="btn btn-primary">Send Message</>
                                </form>

【问题讨论】:

    标签: php


    【解决方案1】:

    变量区分大小写。您的表单使用name="name",全部小写,但您正在寻找,$_POST['Name'] 大写N

    【讨论】:

    • 嗨 Dagon,感谢您的快速回复我现在已将所有内容更改为小写,但仍然给我同样的错误
    • 和 iamfreee 回答的另一半问题
    【解决方案2】:

    你的if错了,$name、$email、$subject和$message不在else的范围内。

    <?php
    
    include 'config.php';
    
    if (isset($_POST['submitted'])) {
    
        ## connect mysql server
        $mysqli = new mysqli('localhost', 'root', '******', 'tomepublications');
        # check connection
        if ($mysqli->connect_errno) {
            echo "<p>MySQL error no {$mysqli->connect_errno} : {$mysqli->connect_error}</p>";
            exit();
        }
    
        $name = trim(mysqli_escape_string($conn,$_POST['name']));
        $email = trim(mysqli_escape_string($conn,$_POST['email']));
        $subject = trim(mysqli_escape_string($conn,$_POST['subject']));
        $message = trim(mysqli_escape_string($conn,$_POST['message']));
    
    
        # insert data into mysql database
        $sql = "INSERT  INTO `contactform` (`idContactForm`, `Name`, `Email`, `Subject`, `Message`) 
                    VALUES (NULL, '{$name}', '{$email}', '{$subject}', '{$message}')";
    
            if ($mysqli->query($sql)) {
                //echo "New Record has id ".$mysqli->insert_id;
                echo "<p>Registred successfully!</p>";
            } else {
                echo "<p>MySQL error no {$mysqli->errno} : {$mysqli->error}</p>";
                exit();
            }
        }
    
    ?>  
    

    【讨论】:

    • 必须在运行mysqli_escape_string()之前连接到服务器
    【解决方案3】:

    当 SQL 查询构建在 else 块中时,这些变量($name、$email、$subject、$message)仍然未定义。变量只在 if 块中定义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-04
      • 2015-03-05
      • 1970-01-01
      相关资源
      最近更新 更多