添加产品表单不起作用,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”的同一页面中,<?php include'connection.php';?>
包含在文件顶部。
【问题讨论】:
你需要在$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 的动态表单字段:它不起作用
自定义HTML / PHP / Mysql表单在Joomla中不起作用