1

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

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

                            <?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:对不起,我搞砸了复制粘贴信息。

4

1 回答 1

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

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

于 2013-09-04T13:43:08.680 回答