Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP添加新的mySQL表行不会';行不通_Php_Mysql_Database_Phpmyadmin - Fatal编程技术网

使用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注入无法 发生
但是当我用“mywebsite.com/save.php”调用我的php时,它会添加一个新行 在我的表格中(在“FR_PM”没有值,这是非常明显的)

我做错了什么

为了防止这种情况发生,您需要在实际处理任何事情之前检查表单是否已提交

注意:如果我们想插入来自外部来源的任何数据(如表单中的用户输入),则对数据进行清理是非常重要的 并进行了验证。始终将表单中的输入视为非常重要的输入 危险的黑客


如果你是一个初学者,你需要学习的一件事是,你应该尽一切努力避免使用
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注入无法 发生
但是当我用“mywebsite.com/save.php”调用我的php时,它会添加一个新行 在我的表格中(在“FR_PM”没有值,这是非常明显的)

我做错了什么

为了防止这种情况发生,您需要在实际处理任何事情之前检查表单是否已提交

注意:如果我们想插入来自外部来源的任何数据(如表单中的用户输入),则对数据进行清理是非常重要的 并进行了验证。始终将表单中的输入视为非常重要的输入 危险的黑客

你可以试试

$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。说。即使是这样也不安全!