【问题标题】:Trouble getting form to post无法获取要发布的表格
【发布时间】:2014-01-10 00:41:09
【问题描述】:

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

我以前只做过一次这样的表格,所以我不擅长排除故障。当表单发布时,我需要提交三件事:作者、正文和 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>

我认为这就是一切。我现在只是被难住了,我不知道这是我错过了什么愚蠢的事情,还是我做了更大的事情并把整个事情搞错了。

任何帮助将不胜感激!

【问题讨论】:

  • 你应该从mysqlistackoverflow.com/questions/17053466/…得到错误信息
  • 为什么这个问题被否决了?它看起来经过精心研究和组织。
  • @coolpup 这个问题的格式确实很好,但这不是重点。检查数据库连接性虽然是重要的一步,但并不是“研究工作”。显示错误消息是因为$result === false,这表明mysqli_query() 失败。不检查错误日志也表明缺乏故障排除。 (ScarletLark,不要误会,我不是在光顾你,我相信你明白我的意思:你的故障排除不足)
  • @RandomSeed 我解释这个问题的方式是日志中没有出现错误,并且 ScarletLark 已经检查过,因为他们在第一段中写了“没有记录错误”。在我看来,这像是研究工作,而且由于它们是 php 新手,当你没有错误要解决时,很难排除故障,但我猜每个人都有自己的
  • 我在想“mysqli_error()”并写了“错误日志”,我的错。投票系统允许每个人发表意见是一件好事(从问题的分数来看,我的不是多数)。

标签: php mysql database forms


【解决方案1】:

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

更改此行:$query .= " $author, $body, $page_name"; 用这条线:$query .=" author, body, pagename"; 或任何您的列的名称。

【讨论】:

  • 谢谢,我想这成功了,因为它现在实际上正在尝试发送。我现在收到错误“警告:无法修改标头信息 - 标头已由第 10 行的 /admin3/includes/functions.php 中的 /admin3/public/new_admin.php:7 开始的输出(输出开始于 /admin3/public/new_admin.php:7)”,但我想这是一个不相关的问题,我必须单独查看
猜你喜欢
  • 2010-09-28
  • 2012-12-14
  • 2022-01-10
  • 2015-03-19
  • 2011-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-26
相关资源
最近更新 更多