PHP未发布到MYSQL

PHP未发布到MYSQL,php,mysql,database,forms,Php,Mysql,Database,Forms,我一定忽略了一些非常明显的东西,但我已经浏览了所有的PHP代码,并将其与其他正在工作的表单进行了比较。我找不到任何区别。基本上,当我提交此表单时,它不会向数据库中的comments表添加任何内容。我一定忽略了一些非常明显的事情。你能帮我找出我遗漏了什么吗?以下是我的php表单: <?php session_start(); require_once('functions/functions.php'); echo do_html(array('title'=>'Comments',

我一定忽略了一些非常明显的东西,但我已经浏览了所有的PHP代码,并将其与其他正在工作的表单进行了比较。我找不到任何区别。基本上,当我提交此表单时,它不会向数据库中的comments表添加任何内容。我一定忽略了一些非常明显的事情。你能帮我找出我遗漏了什么吗?以下是我的php表单:

<?php
session_start();
require_once('functions/functions.php');

echo do_html(array('title'=>'Comments', 'css_file'=>'assets/css/style.css'));
echo do_header();
?>

<div id="usernameDiv"><?php echo do_greetings(); ?></div> 
<div>
    <p class="lead">We are always looking for new feedback, whether you have registered or not! Please leave your name and email address. Thank you!</p>
</div>

<form action="actions/comments.php" method="post">

    First Name:<br>
    <input type="text" name="fname">
    <br>
    Last Name:<br>
    <input type="text" name="lname">
    <br>
    Email Address:<br>
    <input type="text" name="eaddress"> <br><br> 

    <textarea name="ucomment" cols="50" rows="7" placeholder="Enter comments here..."></textarea>

    <br><br>
    <input type="submit" name="submitButton" value="Submit" >

</form>

<?php echo do_footer(); ?>

无论您是否已注册,我们始终在寻找新的反馈!请留下您的姓名和电子邮件地址。谢谢大家!

名字:

姓氏:

电子邮件地址:




然后,这里是将其处理为表单的php文件

<?php
require_once("constants.php"); 

$link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
mysqli_set_charset($link, 'utf8');
if (!$link) {
    die("Database connection failed: " . mysqli_error($link));
}
if (isset($_POST['fname'])) {

    $post_vars = array('fname', 'lname', 'eaddress', 'ucomment');
    foreach($post_vars as $key) {
        $$key = mysqli_real_escape_string($link, $_POST[$key]);

    }

    $sql = "INSERT INTO comments (fname, lname, eaddress, ucomment) VALUES ('$fname', '$lname', '$eaddress', '$ucomment');";
    $result = mysqli_query($link, $sql);
}
mysqli_close($link);
?>

添加更多错误处理

<?php
if ( !isset($_POST['fname']) ) {
    echo '...';
}
else {
    require_once "constants.php";

    $link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
    if ($link->connect_errno) {
        trigger_error( sprintf('mysqli connect error (%d) %s', $link->connect_errno, $link->connect_error), E_USER_ERROR);
        die;
    }
    else if ( !mysqli_set_charset($link, 'utf8') ) {
        trigger_error('Error loading character set utf8: '. $link->error, E_USER_ERROR);
    }
    else {
        $post_vars = array('fname', 'lname', 'eaddress', 'ucomment');
        foreach($post_vars as $key) {
            if ( !isset($_POST[$key]) ) {
                trigger_error('missing POST parameter '.$key, E_USER_ERROR);
                // ....and some bailout code here
            }
            $$key = mysqli_real_escape_string($link, $_POST[$key]);
        }
        $sql = "INSERT INTO comments (fname, lname, eaddress, ucomment) VALUES ('$fname', '$lname', '$eaddress', '$ucomment')";
        $result = mysqli_query($link, $sql);
        if ( !$result ) {
            trigger_error('query failed. '. $link->error, E_USER_ERROR);
        }
        else {
            echo $link->affected_rows, ' record(s) inserted';
        }
    }
    mysqli_close($link);
}

有什么错误吗?使用mysqli时,请使用准备好的查询!如果输入
,是否输入
?生成的查询是什么样子的?在调用mysqli_query($link,$sql)或die(mysqli_error($link))之前,打印查询“$sql”变量
您还可以尝试去掉
“$ucomment”中的分号查看上面OP的评论。他们说删除的答案解决了这个问题。如何/为什么,我不知道。我承认我不在乎(几小时前刚刚决定;-)这一切都是关于泛滥的,因此php/pdo/mysql答案在错误处理和sql注入方面并不完全糟糕-D(否则这将是另一个“这到底是怎么解决问题的”时刻)
<?php
if ( !isset($_POST['fname']) ) {
    echo '...';
}
else {
    require_once "constants.php";

    $link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
    if ($link->connect_errno) {
        trigger_error( sprintf('mysqli connect error (%d) %s', $link->connect_errno, $link->connect_error), E_USER_ERROR);
        die;
    }
    else if ( !mysqli_set_charset($link, 'utf8') ) {
        trigger_error('Error loading character set utf8: '. $link->error, E_USER_ERROR);
    }
    else {
        $post_vars = array('fname', 'lname', 'eaddress', 'ucomment');
        foreach($post_vars as $key) {
            if ( !isset($_POST[$key]) ) {
                trigger_error('missing POST parameter '.$key, E_USER_ERROR);
                // ....and some bailout code here
            }
            $$key = mysqli_real_escape_string($link, $_POST[$key]);
        }
        $sql = "INSERT INTO comments (fname, lname, eaddress, ucomment) VALUES ('$fname', '$lname', '$eaddress', '$ucomment')";
        $result = mysqli_query($link, $sql);
        if ( !$result ) {
            trigger_error('query failed. '. $link->error, E_USER_ERROR);
        }
        else {
            echo $link->affected_rows, ' record(s) inserted';
        }
    }
    mysqli_close($link);
}