我试图验证用户输入和查询,以删除具有相同名称的记录。我用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"?>我希望前面的代码检查字段是否为空,查询delete与数据库上的记录匹配,但它们似乎都正常工作。$product_name似乎完全没有得到任何价值。
发布于 2019-04-09 14:43:02
下面的代码应该正确工作。你的信任中有一个错误: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);
}
}发布于 2019-04-09 14:41:39
如果条件不正确,请使用“==”而不是“=”。
if ($product_name_err ==''){
mysqli_query($link,$sql);
}发布于 2019-04-09 14:42:58
此外,您还应该考虑使用准备好的语句来防止sql注入攻击,它还可以为您做其他好事,比如您不必转义‘或“字符串中的字符”。
https://stackoverflow.com/questions/55595380
复制相似问题