无法获取表单发布

时间:2014-01-10 00:41:10

标签: php mysql database forms

我无法将表单中提交的信息发布到我的数据库中。我不确定问题是什么,没有记录错误,但是我收到消息“有一个错误导致注释被保存。”这就是我在我的php代码中设置的失败消息,所以有些东西不起作用。

我之前只做了一次这样的表格,所以我不善于排除故障。表单发布时我需要提交三件事:author,body和page_name(在发送当前网址的表单中是隐藏的输入类型)。

这是提交表单的PHP代码:

<?php 
if (isset($_POST['submit'])) {
$required_fields = array("author", "body");
validate_presences($required_fields);

if (empty($errors)) {
    $author = mysql_prep($_POST['author']);
    $body = mysql_prep($_POST['body']); 
    $page_name = ($_POST['page_name']);

    $query  = "INSERT INTO comments (";
    $query .= "  $author, $body, $page_name";
    $query .= ") VALUES (";
    $query .= "  '{$author}', '{$body}', '{$page_name}'";
    $query .= ")";
    $result = mysqli_query($connection, $query);

    if ($result) {
        redirect_to("new_admin.php");
    } else {
            // Failure
            $_SESSION["message"] = "There was an error that prevented the comment from being saved.";
    }
}
} else {
    $author = "";
    $body = "";
}
?>

这是我在上面代码中使用的函数(它存储在主页开头调用的单独页面上):

    function mysql_prep($string) {
    global $connection;

    $escaped_string = mysqli_real_escape_string($connection, $string);
    return $escaped_string;
}

    function redirect_to($new_location) {
    header("Location: " . $new_location);
    exit;
}

$ connection是我用于数据库连接的,我已经双重检查了

这是我表单的代码:

    <form action="new_admin.php" method="post">
    <input type="hidden" name="page_name" value="<?=$_SERVER['REQUEST_URI']?>" />
<table>
  <tr>
    <td>Your name:</td>
    <td><input type="text" name="author" value="<?php echo $author; ?>" /></td>
  </tr>
  <tr>
    <td>Your comment:</td>
    <td><textarea name="body" cols="40" rows="8"><?php echo $body; ?></textarea></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td><input type="submit" name="submit" value="Submit Comment" /></td>
  </tr>
</table>
</form>

我认为这就是一切。我现在只是难倒了,我不知道这是不是很愚蠢,我不知道,或者我做了什么更大的事情,并把整件事情弄错了。

任何帮助都会非常感激!!

1 个答案:

答案 0 :(得分:2)

您要在要插入的列中引用变量值。 PHP的一个特性是用双引号中的$变量替换变量的值。如果我将作者姓名作为“King”并将正文设为“BestBody”,那么您的查询将为INSERT INTO comments (KING, BestBody, <page>) VALUES('King', 'BestBody', <page>)"

更改此行:$query .= " $author, $body, $page_name"; 这一行:$query .=" author, body, pagename"; 或者你的列被命名为什么。