【问题标题】:Why is my PHP code inputting "0"s and no input for the other fields?为什么我的 PHP 代码输入“0”而其他字段没有输入?
【发布时间】:2020-08-14 07:48:05
【问题描述】:

我正在尝试创建一个 INSERT 以使用表单将数据添加到数据库,但它为日期设置了“0000-00-00”,为其他整数/浮点数设置了“0”,没有任何价值对于 VARCHAR。

<form action = "display.php" method = "post">
             <h3> Add a Product </h3>
             <input type = "text" id = "product_number" name = "product_number" cols=75 minlength="4" maxlength="4" placeholder = "Product Number" required>
             <br>
             <input type = "text" id = "supplier_id" name = "supplier_id" cols=75 minlength="4" maxlength="4" placeholder = "Supplier ID">
             <br>
             <input type = "text" id = "date" name = "date" cols=75 placeholder = "yyyy-mm-dd">
             <br>
             <input type = "number" id = "quantity" name = "quantity" cols=75 placeholder = "Quantity">
             <br>
             <input type = "text" id = "description" name = "description" cols=75 maxlength="50" placeholder = "Description">
             <br>
             <input type = "text" id = "price" name = "price" cols=75 placeholder = "Price">
             <br>
             <button type = "submit" name = "submit" cols=75 value = "Add"> Add Product to Database </button>
         </form>
</div>
<br>
<br>
<br>

<?php


 $product_number = mysqli_real_escape_string($conn, $_POST['product_number']);
 $supplier_id = mysqli_real_escape_string($conn, $_POST['supplier_id']);
 $date = mysqli_real_escape_string($conn, $_POST['date']);
 $quantity = mysqli_real_escape_string($conn, $_POST['quantity']);
 $description = mysqli_real_escape_string($conn, $_POST['description']);
 $price = mysqli_real_escape_string($conn, $_POST['price']);

 $sql = "INSERT into products (product_number, supplier_id, date, quantity, description, price) values ('$product_number', '$supplier_id', '$date', '$quantity', '$description', '$price')";


 if(mysqli_query($conn, $sql)) {
     echo "";
 } else {
     echo ""; 
 }
 mysqli_close($conn);
?>    

【问题讨论】:

  • 请使用文本而不是代码的图像。
  • 对不起!我添加了我正在努力解决的代码。数据库可以工作,但它输入的是“0”而不是我尝试使用表单添加的值。
  • 我不确定我是否遇到了您的问题,但我建议您将日期的输入从文本更改为日期(type = "text" --> type="date"),这将帮助您日期格式,您将在接下来的步骤中避免一些问题

标签: php html sql


【解决方案1】:

我认为问题可能在于您的 INSERT 语句甚至在您提交表单之前就已运行。

将代码包装在一个语句中,该语句在提交表单时检查请求是否为 POST 请求(浏览器只会生成 POST,而不是 GET)。

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST')
{
 $product_number = mysqli_real_escape_string($conn, $_POST['product_number']);
 $supplier_id = mysqli_real_escape_string($conn, $_POST['supplier_id']);
 $date = mysqli_real_escape_string($conn, $_POST['date']);
 $quantity = mysqli_real_escape_string($conn, $_POST['quantity']);
 $description = mysqli_real_escape_string($conn, $_POST['description']);
 $price = mysqli_real_escape_string($conn, $_POST['price']);

 $sql = "INSERT into products (product_number, supplier_id, date, quantity, description, price) values ('$product_number', '$supplier_id', '$date', '$quantity', '$description', '$price')";


 if(mysqli_query($conn, $sql)) {
     echo "";
 } else {
     echo ""; 
 }
 mysqli_close($conn);
}
?>    

附:我怀疑您在提交表单后可能还会插入第二个正确的行?除此之外,代码没有任何明显的问题(尽管最好使用准备好的语句和参数,而不是转义字符串并将值连接到 SQL -this article(其中很多)向您展示了如何以最安全的方式编写您的查询))。

【讨论】:

    猜你喜欢
    • 2022-01-18
    • 2023-02-03
    • 1970-01-01
    • 2023-03-04
    • 2019-07-20
    • 1970-01-01
    • 1970-01-01
    • 2019-05-07
    • 2017-09-09
    相关资源
    最近更新 更多