【问题标题】:My function runs successfully, but the database shows a row with zeros or blank space我的函数运行成功,但数据库显示一行有零或空格
【发布时间】:2013-07-19 11:15:03
【问题描述】:

我正在设计一个 crud 应用程序来将存储数据存储在数据库中。使用 php、mySQL(在 XAMPP 的帮助下)。不过,我一直遇到这个问题,我在表单上单击“提交”,并且该函数似乎运行成功(我在 php 页面上收到了成功消息),但是当我查看实际数据库时,行填充3 个字段(第一个 1 和最后一个 2)只有“0”,无论我单击提交时表单中的内容是什么。然后其他两列根本没有任何内容。

这是我的表单代码:

<div id="newprojform">
  <fieldset><legend>Create New Project</legend>
    <form action='projectadded.php' name="addnewproject"  onsubmit="return(validate());">
      <div id="newprojfields"><br />
        Project Name: 
        <div class="field">
          <input type="text" name="projname" size="50">
        </div>
        <br /><br />
        Customer: 
        <div class="field">
          <input type="text" name="custname" size="50">
        </div>
        <br /> <br />
        Move ID: 
        <div class="field">
          <input type ="text" name="moveID" size="50"> 
        </div>
        <br /><br />
        <label for="unit">Unit of Measurement: </label>
        <div class="field" id="uomdd">
          <select id="unit" name="unit">
            <option value="Select">Select</option>
            <option value="CWT">CWT</option>
            <option value="Vault">Vault</option>
            <option value="SqFt">SqFt</option>
            <option value="Pallet">Pallet</option>
            <option value="Piececount">Piece Count</option>
          </select>
        </div>
        <br /><br />
        Cost Per Unit: 
        <div class="field">
          <input type="text" name="cost" size="50">
        </div>
        <br /> <br />
        <input type="submit" value="Add Project" id="submit"><br />
      </div>
  </form></fieldset>

</div> 

这是 php

<?php 
$con=mysqli_connect("localhost","root","", "storagelog");  
if (mysqli_connect_errno())
{
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$sql="INSERT INTO newproject (moveid, projectname, customername, UoM, PPU)
VALUES
('$_POST[moveID]','$_POST[projname]','$_POST[custname]','$_POST[unit]','$_POST[cost]')";

if(!mysqli_query($con,$sql))
{
    die ('Error: ' . mysqli_error($con));
}
echo "1 record added";

mysqli_close($con);
?>

谁能告诉我我做错了什么?我已经检查了表格的语法和名称一百万次,但每次单击“提交”时,我都会得到一行,其中要么有零,要么什么都没有。这对我来说都是新事物,所以我预计会有很多愚蠢或笨拙的错误,但这是我第一次如此陷入困境..

感谢任何帮助。

【问题讨论】:

  • 您正在使用 mysqli ...任何原因您不使用参数化查询,甚至不尝试清理您的查询输入???

标签: php mysql database web-applications crud


【解决方案1】:

问题是您没有将 POST 指定为表单中的方法,而是尝试从 $_POST 变量中读取表单变量。有关表单默认值的信息,请参阅此线程:What is the default form HTTP method?。要修复它,您只需将表单更改为:

<form action='projectadded.php' name="addnewproject"  onsubmit="return(validate());" method="POST">

您还应该在此处更改其他一些内容,例如在将输入放入数据库之前对其进行清理,但这不是问题的根源。

【讨论】:

    【解决方案2】:

    所以首先要做的事情。我不建议在处理数据库时使用未过滤的 $_POST 和 $_GET 变量(当然是在生产环境中)。

    其次,当使用表单元素时,你必须指定你使用的是post方法还是get方法:

    <form action="location_of_file.php" method="POST">
    

    另外,请确保您检查表中的列名是否与您的 sql 插入语法中的名称完全匹配。

    甚至可以尝试以下方法来查看它是否插入:

    $sql="INSERT INTO newproject (`moveid`, `projectname`, `customername`, `UoM`, `PPU`)
      VALUES ('" . $_POST["moveID"] . "','" . $_POST["projname"] . "','" . $_POST["custname"] . "','" . $_POST["unit"] . "','" . $_POST["cost"] . "')";
    

    有时,SQL 可能很敏感。

    大声笑,该死... seanmk 击败了我。如果我们的建议有效,请选择他最先发布的答案。

    【讨论】:

      【解决方案3】:

      为了将来的参考(除了其他答案中的优秀建议),您应该考虑打印出 $sql 以查看您的实际插入语句是什么样的。您会立即看到您的值是空字符串,并且会知道去追逐 $_POST 以查看它为何为空。

      【讨论】:

        猜你喜欢
        • 2012-04-22
        • 1970-01-01
        • 1970-01-01
        • 2018-04-05
        • 1970-01-01
        • 2018-08-15
        • 1970-01-01
        • 1970-01-01
        • 2019-12-30
        相关资源
        最近更新 更多