这可能是一个小错误,但我目前正在尝试从html表单发布到数据库中以添加新条目。
以下是代码:
<div>
<?php
$menu = "INSERT INTO content (id, path, name)
**VALUES ('".$_POST['id']."', '".$_POST['path']."', '".$_POST['name']."')";**
if ($connnect->query($menu) === TRUE) {
echo "New page added successfully";
} else {
echo "Error";
}
?>
<form action="" method="post" name="menus" id="menus">
<table style="width: 500px;">
<tbody>
<tr>
<td>
<textarea name="id" id="id"></textarea>
</td>
</tr>
<tr>
<td>
<textarea name="path" id="path"></textarea>
</td>
</tr>
<tr>
<td>
<textarea name="name" id="name"></textarea>
</td>
</tr>
<tr>
<td>
<input type="submit" name="button" id="button" value="Upload">
</td>
</tr>
</tbody>
</table>
</form>
</div>
但是很明显你不能把每个$ _POST从表单放到每个值中是否有另一种方法可以做到这一点还是有人可以帮助我?
亲切的问候, 路易斯
答案 0 :(得分:0)
使用sprintf,它可以使传递给值的参数的顺序更具可读性:
$menu = sprintf("INSERT INTO content (id, path, name) VALUES ('%s', '%s', '%s')", mysql_real_escape_string($_POST['id']), mysql_real_escape_string($_POST['path']), mysql_real_escape_string($_POST['name']));
答案 1 :(得分:0)
考虑到这是您的完整代码,一个主要问题是您每次加载页面时都要插入表单内容。如果您的表单处理位于同一页面中,您可能需要添加一个简单的检查。例如:
<?php
if (isset($_POST['submit'])) {
# form information received, process it
}
# else continue with your normal script and display the form
?>
在这种情况下,在第一页加载中,$_POST
数据未设置,因此只有表单才会出现。提交表单时,脚本会检测到数据并对其进行处理。
在评论中解释,PHP Data Objects(或简称PDO)是一种更现代,便携和安全的数据库处理方式。互联网上有很多关于如何以及为什么的解释;手册页本身很容易阅读。您可以准备语句,然后类本身将处理使脚本安全所需的所有转义。快速举例:
# make a connection
$db = new PDO(/* database info */);
# prepare your statement with the placeholders for your data
$st = $db->prepare("
INSERT INTO content (id, path, name)
VALUES (?,?,?)
");
# execute the query with the POST data
$success = $st->execute([
$_POST['id'],
$_POST['path'],
$_POST['name']
]);
if (!$success) {
# error ...
}