添加产品表单不起作用,HTML 和 PHP

Posted

技术标签:

【中文标题】添加产品表单不起作用,HTML 和 PHP【英文标题】:Add products form not working, HTML and PHP 【发布时间】:2021-12-14 17:45:49 【问题描述】:

我正在尝试将产品从表单添加到数据库,但它不起作用。单击提交后,页面刷新但没有任何反应。我尝试过if(isset($_POST['submit'])),但仍然没有任何改变。我是 php 的初学者,所以我理解这是否是一个非常简单的错误。

<?php
  if(isset($_POST['product_form']))
  
    $SKUI = $_POST['addsku'];
    $NameI = $_POST['addname'];
    $PriceI = $_POST['addprice'];
    $TypeI = $_POST['addtype'];
    $AttributeI = $_POST['addattribute'];

    $sql="INSERT INTO products ('SKU', 'Name', 'Price', 'Type', 'Attribute') VALUES ('$SKUI', '$NameI', '$PriceI', '$TypeI', '$AttributeI')";
  
?>
<form id="product_form" style="margin-top: 100px; margin-left: 50px" action="" method="POST">
    <p>
      <label>SKU:</label>
      <input type="text" id="sku" name="addsku" required oninvalid="this.setCustomValidity('Please, submit required data.')" oninput="this.setCustomValidity('')">
    </p>

    <p>
      <label>Name:</label>
      <input type="text" id="name" name="addname" required oninvalid="this.setCustomValidity('Please, submit required data.')" oninput="this.setCustomValidity('')">
    </p>

    <p>
      <label>Price ($):</label>
      <input type="number" id="price" name="addprice" required oninvalid="InvalidMsg(this);" oninput="InvalidMsg(this);">
    </p>

    <p>
      <label>Type Switcher</label>
      <select id="productType" name="addtype" required>
        <option value="DVD">DVD</option>
        <option value="Book">Book</option>
        <option value="Furniture">Furniture</option>
      </select>
    </p>

    <p>
      <label>Attribute:</label>
      <input type="text" id="attribute" name="addattribute" required oninvalid="InvalidMsg(this);" oninput="InvalidMsg(this);">
    </p>
    <input type="submit" value="Submit">
  </form>

PHP 和 html 位于名为“add-product.php”的同一页面中,&lt;?php include'connection.php';?&gt; 包含在文件顶部。

【问题讨论】:

你需要在$sql var中执行SQL查询,而不仅仅是定义它 【参考方案1】:

正如 cmets 中所指出的,您需要创建一个 SQL 连接并执行您想要的查询。下面是从documentation获取的示例代码:

$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);

// It returns the number of rows affected
$count = $dbh->exec("INSERT INTO products ('SKU', 'Name', 'Price', 'Type', 'Attribute') VALUES ('$SKUI', '$NameI', '$PriceI', '$TypeI', '$AttributeI')");

你应该使用prepared statements来避免SQL注入攻击。

编辑

不使用 PDO:

$mysqli = new mysqli("localhost", "my_user", "my_password", "my_db");


/* Prepare statement */
$stmt = $mysqli->prepare("INSERT INTO products ('SKU', 'Name', 'Price', 'Type', 'Attribute') VALUES (?,?,?,?,?)");

/* Bind variables to parameters */
$stmt->bind_param("ssdss", $SKUI, $NameI, $PriceI, $TypeI, $AttributeI);

/* Execute the statement */
$stmt->execute();

【讨论】:

我试过了,还是不行。我正在使用 mysqli。 我也使用 mysqli 编辑了问题以扩展答案。 不幸的是没有工作。

以上是关于添加产品表单不起作用,HTML 和 PHP的主要内容,如果未能解决你的问题,请参考以下文章

带有 javascript 和 php 的动态表单字段:它不起作用

简单的 PHP 提交表单不起作用

自定义HTML / PHP / Mysql表单在Joomla中不起作用

为啥我的 PHP 表单不起作用?我确实收到了电子邮件,但里面没有内容

插件管理页面中的 Ajax 表单不起作用

登录到管理员 - 使用 PHP 和 MySQL 的会员网站 - 登录不起作用