你能帮我解决这个问题吗?我试图将数据插入我的数据库,而不是将其插入 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/