首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >表单没有收集用户输入,查询也不能正常工作,即使我输入了一个有效的表和列。

表单没有收集用户输入,查询也不能正常工作,即使我输入了一个有效的表和列。
EN

Stack Overflow用户
提问于 2019-04-09 14:37:43
回答 4查看 34关注 0票数 0

我试图验证用户输入和查询,以删除具有相同名称的记录。我用phpStorm编码

我试着检查了代码的错误、格式和phpAdmin中的查询,它运行良好

代码语言:javascript
复制
<?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似乎完全没有得到任何价值。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-04-09 14:43:02

下面的代码应该正确工作。你的信任中有一个错误:if ($product_name_err =''){应该是if ($product_name_err ==''){

此外,您的代码对注入攻击是不可容忍的,下面使用mysqli_escape_string函数修复了注入攻击。

代码语言:javascript
复制
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);
    }

}
票数 0
EN

Stack Overflow用户

发布于 2019-04-09 14:41:39

如果条件不正确,请使用“==”而不是“=”。

代码语言:javascript
复制
if ($product_name_err ==''){
        mysqli_query($link,$sql);
 }
票数 0
EN

Stack Overflow用户

发布于 2019-04-09 14:42:58

此外,您还应该考虑使用准备好的语句来防止sql注入攻击,它还可以为您做其他好事,比如您不必转义‘或“字符串中的字符”。

关于准备好的陈述的更多信息

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55595380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档