我正在尝试验证用户输入并查询删除具有相同名称的记录。我正在使用phpStorm进行编码
我试图遍历拼写错误,代码格式并在phpAdmin中检查查询,效果很好
<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 3/24/2019
* Time: 4:38 PM
*/
// Include config file
require_once "config.php";
$product_name= '';
$product_name_err = '';
// Processing form data when form is submitted
if($_SERVER["REQUEST_METHOD"] == "POST")
{
if(empty(trim($_POST["product_name"]))){
$product_name_err = "Please enter the product name.";
} else{
$product_name = trim($_POST["product_name"]);
}
//Delete the data in the product table
$sql = "DELETE FROM `products` WHERE `name` = '$product_name'";
if ($product_name_err =''){
mysqli_query($link,$sql);
}
}
?>
<?php include "header_admin.php"?>
<div class="wrapper">
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
<div class="form-group" <?php echo (!empty($product_name_err)) ? 'has-error' : ''; ?>>
<label>Product name</label>
<input type="text" name="product_name" class="form-control" >
<span class="help-block"><?php echo $product_name_err; ?></span>
</div>
<div class="form-group">
<input type="submit" class="btn btn-primary" value="Delete Item">
</div>
</form>
</div>
<?php include "footer.php"?>
我希望前面的代码检查该字段是否为空,并且查询删除数据库中匹配的记录,但是它们中的任何一个似乎都能正常工作。 $ product_name似乎根本没有任何值。
答案 0 :(得分:0)
如果条件不正确,请使用'=='代替'='。
if ($product_name_err ==''){
mysqli_query($link,$sql);
}
答案 1 :(得分:0)
您还应该真正考虑使用准备好的语句来防止sql注入攻击,并且它对您还有其他好处,就像您不必从字符串中转义'或“字符一样。
答案 2 :(得分:0)
以下代码应正常工作。您的配音中有一个错字:if ($product_name_err =''){
应该是if ($product_name_err ==''){
此外,您的代码很容易受到注入式攻击,下面通过使用mysqli_escape_string
函数对其进行了修复。
if($_SERVER["REQUEST_METHOD"] == "POST") {
$product_name = mysqli_escape_string($link, trim($_POST["product_name"]));
if(empty($input)){
$product_name_err = "Please enter the product name.";
}
//Delete the data in the product table
$sql = "DELETE FROM `products` WHERE `name` = '$product_name'";
if($product_name_err == ''){
mysqli_query($link,$sql);
}
}
答案 3 :(得分:0)