php - 无法执行插入查询?

标签 php mysql

你能帮我解决这个问题吗?我试图将数据插入我的数据库,而不是将其插入 die() 输出;出现

<?php
    if (isset($_GET['submit'])) {
        $item_code = mysqli_real_escape_string($conn, $_GET['item_code']);
        $item_name = mysqli_real_escape_string($conn, $_GET['item_name']);
        $supplier = mysqli_real_escape_string($conn, $_GET['supplier_name']);
        $brand = mysqli_real_escape_string($conn, $_GET['brand_name']);
        $quantity = mysqli_real_escape_string($conn, $_GET['quantity']);
        $unit = mysqli_real_escape_string($conn, $_GET['unit_name']);
        $price = mysqli_real_escape_string($conn, $_GET['price']);
        $item_type = mysqli_real_escape_string($conn, $_GET['type_name']);
        $category = mysqli_real_escape_string($conn, $_GET['cat_name']);

        if ($item_code == '' || $item_name == '' || $supplier == '' || $brand == '' ||
            $quantity == '' ||
            $unit == '' ||
            $price == '' ||
            $item_type == '' ||
            $category == ''
        ) {
            header("Location: item.php?attempt=empty");
        } else {
            $sql = mysqli_query($conn, "INSERT INTO itemlist (item_name,supplier_name,brand_name,quantity,unit_name,price,type_name,cat_name)    values('$item_name','$supplier','$brand','$quantity','$unit','$price','$item_type','$category')")

            or die("Could not execute the insert query.");
            header("Location: item.php?attempt=saved");
        }
    } 
?>

最佳答案

我只是注意到了一些事情:

  • 为什么使用GET方法而不是POST来传递数据?
  • 您可以使用 empty()而不是 == ''
  • 你可以试试prepared statement而不是转义和清理每个提交的数据
  • $_GET['item_code'] 的目的是什么?您没有在插入中使用它,但它在您的 if() 条件中。

假设您将表单从 GET 方法更改为 POST 方法:

if (isset($_POST['submit'])) {

    if(empty($_POST['item_code']) || empty($_POST['item_name']) || empty($_POST['supplier_name']) || empty($_POST['brand_name']) || empty($_POST['quantity']) || empty($_POST['unit_name']) || empty($_POST['price']) || empty($_POST['type_name']) || empty($_POST['cat_name'])){

        header("Location: item.php?attempt=empty");

    } else {

        $stmt = $conn->prepare("INSERT INTO itemlist (item_code, item_name, supplier_name, brand_name, quantity, unit_name, price, type_name, cat_name) VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
        $stmt->bind_param("sssssssss", $_POST['item_code'], $_POST['item_name'], $_POST['supplier_name'], $_POST['brand_name'], $_POST['quantity'], $_POST['unit_name'], $_POST['price'], $_POST['type_name'], $_POST['cat_name']);
        $stmt->execute();
        $stmt->close();

        header("Location: item.php?attempt=saved");
    }
} 

请记住,一个空数据将进入 if() 条件并执行 header("Location: item.php?attempt=empty");

关于php - 无法执行插入查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37248137/

相关文章:

MySQL 仅在值存在时才加入一列

mysql - 使用 JSON 中的 Feeds 模块导入时,13 位数字会得到指数格式

php - PHP脚本强制下载YouTube视频

php - 如何使用php将csv文件上传到mysql?

php - 获取 Wordpress 附件图片 url

php - 为什么我的查询找到的是数字字段条目,而不是数字/字母组合

php - MYSQL查询语句替换PHP循环

php - MySQL - 在 PHP 中批量重命名所有行

php - 上传文件并以单一形式提交文本是否可能?

c# - 如何使用c#获取gridview中的特定数据?