我无法将表单中提交的信息发布到我的数据库中。我不确定问题是什么,没有记录错误,但是我收到消息“有一个错误导致注释被保存。”这就是我在我的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> </td>
<td><input type="submit" name="submit" value="Submit Comment" /></td>
</tr>
</table>
</form>
我认为这就是一切。我现在只是难倒了,我不知道这是不是很愚蠢,我不知道,或者我做了什么更大的事情,并把整件事情弄错了。
任何帮助都会非常感激!!
答案 0 :(得分:2)
您要在要插入的列中引用变量值。 PHP的一个特性是用双引号中的$变量替换变量的值。如果我将作者姓名作为“King”并将正文设为“BestBody”,那么您的查询将为INSERT INTO comments (KING, BestBody, <page>) VALUES('King', 'BestBody', <page>)"
更改此行:$query .= " $author, $body, $page_name";
这一行:$query .=" author, body, pagename";
或者你的列被命名为什么。