使用PHP添加新的mySQL表行不会';行不通
我有一个小表格:使用PHP添加新的mySQL表行不会';行不通,php,mysql,database,phpmyadmin,Php,Mysql,Database,Phpmyadmin,我有一个小表格: <form id="plannerform" action="save.php" method="post"> <input id="plannername" placeholder=" " type="text" autocomplete="off" name="plannername"> <input id="plannersubmit" type="submit" value="eintragen"> </form
<form id="plannerform" action="save.php" method="post">
<input id="plannername" placeholder=" " type="text" autocomplete="off" name="plannername">
<input id="plannersubmit" type="submit" value="eintragen">
</form>
FR\u PM
是我表格的一列。但当我按submit时,甚至没有创建新行。什么也没发生。
但是当我用“mywebsite.com/save.php”调用我的php时,它会在我的表中添加一个新行(在“FR_PM”中没有值,这是很明显的)
我做错了什么?更改插入查询:
$sql="INSERT INTO anmeldungen (FR_PM) VALUES ('".$_POST["plannername"]."')";
或
更改插入查询:
$sql="INSERT INTO anmeldungen (FR_PM) VALUES ('".$_POST["plannername"]."')";
或
另外,在HTML表单中使用“name”=
而不是“id”=
。
使用表单和HTTP POST方法时,这通常会产生误导。此外,在HTML表单中使用“name”=
,而不是“id”=
。
在使用表单和HTTP POST方法时,这通常会产生误导。如果您是初学者,您需要了解的一点是,您应该尽一切努力避免使用
mysql.*
函数。这一功能已被贬低,php不再支持它。相反,将mysqli.*
与准备好的语句一起使用,或者使用PDO准备好的语句
<form id="plannerform" action="save.php" method="post">
<input id="plannername" placeholder=" " type="text" autocomplete="off" name="plannername">
<input id="plannersubmit" type="submit" value="eintragen" name="submit">
</form>
准备好的语句使您的代码看起来干净,易于调试
这是你准备好的陈述的例子
<form id="plannerform" action="save.php" method="post">
<input id="plannername" placeholder=" " type="text" autocomplete="off" name="plannername">
<input id="plannersubmit" type="submit" value="eintragen" name="submit">
</form>
save.php
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "myDB";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
if (isset($_POST['submit'])) {
if (empty($_POST['plannername'])) {
die("Enter plannername");
} else {
// prepare and bind
$stmt = $conn->prepare("INSERT INTO anmeldungen (FR_PM) VALUES (?)");
$stmt->bind_param("s", $_POST['plannername']);
if ($stmt->execute()) {
echo "New records created successfully";
} else {
echo "Could not insert record";
}
$stmt->close();
}
}
?>
我使用事先准备好的声明的原因:
- Prepared语句减少了解析时间,因为在 查询只执行一次(尽管语句执行多次) (次)
- 绑定参数可在需要发送时最小化到服务器的带宽 每次仅显示参数,而不是整个查询
- 准备好的语句对于SQL注入非常有用,因为 参数值,稍后使用不同的 协议,不需要正确转义。如果原始声明 模板不是从外部输入派生的,SQL注入无法 发生
如果你是一个初学者,你需要学习的一件事是,你应该尽一切努力避免使用
mysql.*
函数。这个函数被贬低了,php不再支持它。相反,将mysqli.*
与准备好的语句一起使用,或者使用PDO准备好的语句
<form id="plannerform" action="save.php" method="post">
<input id="plannername" placeholder=" " type="text" autocomplete="off" name="plannername">
<input id="plannersubmit" type="submit" value="eintragen" name="submit">
</form>
准备好的语句使您的代码看起来干净,易于调试
这是你准备好的陈述的例子
<form id="plannerform" action="save.php" method="post">
<input id="plannername" placeholder=" " type="text" autocomplete="off" name="plannername">
<input id="plannersubmit" type="submit" value="eintragen" name="submit">
</form>
save.php
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "myDB";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
if (isset($_POST['submit'])) {
if (empty($_POST['plannername'])) {
die("Enter plannername");
} else {
// prepare and bind
$stmt = $conn->prepare("INSERT INTO anmeldungen (FR_PM) VALUES (?)");
$stmt->bind_param("s", $_POST['plannername']);
if ($stmt->execute()) {
echo "New records created successfully";
} else {
echo "Could not insert record";
}
$stmt->close();
}
}
?>
我使用事先准备好的声明的原因:
- Prepared语句减少了解析时间,因为在 查询只执行一次(尽管语句执行多次) (次)
- 绑定参数可在需要发送时最小化到服务器的带宽 每次仅显示参数,而不是整个查询
- 准备好的语句对于SQL注入非常有用,因为 参数值,稍后使用不同的 协议,不需要正确转义。如果原始声明 模板不是从外部输入派生的,SQL注入无法 发生
$value = $_POST['plannername'];
$sql="INSERT INTO anmeldungen (FR_PM) VALUES ('{$value}')";
你可以试试
$value = $_POST['plannername'];
$sql="INSERT INTO anmeldungen (FR_PM) VALUES ('{$value}')";
还是。我提交时什么也没有发生。您也可以在数组变量:
“…value(“{$\u POST['plannername']}”)周围放上大括号
@TobiasGlaus只需查看您是否获得了$\u POST[“plannername”]
的值即可?@Punit。。控制台里什么也没有。我还能从哪里得到错误?@PathikVejani我怎么能检查呢?还是。我提交时什么也没有发生。您也可以在数组变量:“…value(“{$\u POST['plannername']}”)周围放上大括号
@TobiasGlaus只需查看您是否获得了$\u POST[“plannername”]
的值即可?@Punit。。控制台里什么也没有。我还能从哪里得到错误?@PathikVejani我怎么能检查呢?我正在使用你的代码,但仍然。我提交时没有发生任何事情。是否更新表单并将name属性添加到按钮?这个代码应该可以工作@TobiasGlaus@MasivuyeCokile啊,问题解决了一半。但现在有些奇怪的事情发生了。你能参加这个聊天吗?我在那里发布了一张图片,我正在使用你的代码,但仍然。我提交时没有发生任何事情。是否更新表单并将name属性添加到按钮?这个代码应该可以工作@TobiasGlaus@MasivuyeCokile啊,问题解决了一半。但现在有些奇怪的事情发生了。你能参加这个聊天吗?我贴了一张图片,看起来不错,因为我也遇到了同样的问题。看起来不错,因为我也遇到了同样的问题。请。已在PHP7中删除。了解使用PDO的语句,并考虑使用PDO。说。即使是这样也不安全!请已在PHP7中删除。了解使用PDO的语句,并考虑使用PDO。说。即使是这样也不安全!