表单未收集用户输入,即使我输入了有效的表和列,查询也无法正常工作

时间:2019-04-09 14:37:43

标签: php html mysql html5

我正在尝试验证用户输入并查询删除具有相同名称的记录。我正在使用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似乎根本没有任何值。

4 个答案:

答案 0 :(得分:0)

如果条件不正确,请使用'=='代替'='。

if ($product_name_err ==''){
        mysqli_query($link,$sql);
 }

答案 1 :(得分:0)

您还应该真正考虑使用准备好的语句来防止sql注入攻击,并且它对您还有其他好处,就像您不必从字符串中转义'或“字符一样。

More info on prepared statements

答案 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)

Php代码检查将有助于检查您的PHP代码。可能会对您有帮助。

#PHP Code Checker

高级的自定义PHP代码检查器,可在您的代码中搜索常见的,难以发现的错别字和错误;包括语法检查。

enter image description here