$ _POST导致MySQL数据库中的空字段

时间:2013-09-04 13:36:04

标签: mysql sql database arrays post

感谢您抽出宝贵时间阅读本文。这个问题之前可能已经或可能没有得到解答,我可能一直在寻找错误的地方,但我在这里遇到了一个死胡同,希望我能找到一些寻求解决方案的帮助。

在我将查询发送到我的数据库之前,我正在使用基本表单验证特定字段和复选框。

                            <?php
                            if ($_SERVER["REQUEST_METHOD"] == "POST") {

                                // validate the text inputs
                                $err = array();
                                if (empty($_POST['A'])) {
                                    array_push($err, "A is required.");
                                }                
                                if (empty($_POST['B'])) {
                                    array_push($err, "B is required.");
                                }
                                if (empty($_POST['C'])) {
                                    array_push($err, "C is required.");
                                } else {
                                    $pattern = "^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$";

                                    if (!eregi($pattern, $_POST['email'])) {
                                        array_push($err, "Incorrect email.");
                                    }
                                }        
                                if (empty($_POST['D'])) {
                                    array_push($err, "D is required.");

                                if (sizeof($err) != 0) {
                                    echo "<p style='color: red'>The following files haven't been filled yet.</p>";
                                    echo "<ul style='list-style:circle !important;color: red !important;'>";

                                    foreach ($err as &$value) {
                                        echo "<li style='background: 0;list-style: disc inside none;color: red;'>" . $value . "</li>";
                                    }

                                    echo "</ul>";
                                    echo "<br/>";
                                }

                                // validate the agree checkbox
                                if (sizeof($err) == 0 && !isset($_POST['agree'])) {
                                    array_push($err, "Please agree with the ToS.");
                                    foreach ($err as &$value) {
                                        echo "<p style='color: red'>" . $value . "</p>";
                                    }
                                }
                            }
                            ?>

然后在我们得到的表格内部:

<?php echo isset($_POST['a']) ? $_POST['a'] : ''; ?>"

其他行是相同的,所以我将免于你阅读一个巨大的块。从那时起,我将代码发送到:

<?php       
// redirect if form is valid
if (sizeof($err) == 0 && isset($_POST['agree'])) { 
    // set post data in session 
    session_start();

        $_POST = $_SESSION['POSTDATA'];            
            $con = mysqli_connect("localhost", "x", "y", "z");
                                                        // Check connection
                                                        if (mysqli_connect_errno()) {
                                                            echo "Failed to connect to MySQL: " . mysqli_connect_error();
                                                        }   

                                                        $sql = "INSERT INTO esselte_nl (a, b, email, c, d) VALUES
                                                            ('$_POST[a]',
                                                                '$_POST[b]',
                                                                '$_POST[email]',
                                                                '$_POST[c]',
                                                                '$_POST[d]')";

                                                        if (!mysqli_query($con, $sql)) {
                                                            die('Error: ' . mysqli_error($con));
                                                        }

                                                        mysqli_close($con);
    // redirect to result.php
    exit('<meta http-equiv="refresh" content="0; url=resullt"/>'); 
    return;
            session_destroy();
    }
?>

最糟糕的是,我相当肯定这是某个非常小的错误而且我忽略了它,非常令人沮丧。所以,如果有人可以指出我在这里做错了什么,我会很感激。

友好的问候, user2747008(我真的应该选择一个名字)

PS:很抱歉,我搞砸了复制信息。

1 个答案:

答案 0 :(得分:1)

   $sql = "INSERT INTO esselte_nl (a, b, email, c, d) VALUES
                                                        ('$_POST[a]',
                                                            '$_POST[b]',
                                                            '$_POST[c]',
                                                            '$_POST[email]')";

您的insert语句有5个字段名称,但只有4个值,并且它们的顺序不正确。