【发布时间】: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> </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()”并写了“错误日志”,我的错。投票系统允许每个人发表意见是一件好事(从问题的分数来看,我的不是多数)。