0

我正在设计一个 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);
?>

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

任何帮助表示赞赏。

4

3 回答 3

1

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

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

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

于 2013-07-20T03:52:47.800 回答
1

所以首先要做的事情。我不建议在处理数据库时使用未经过滤的 $_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 打败了我。如果我们的建议有效,请选择他第一个发布的答案。

于 2013-07-20T03:54:41.500 回答
1

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

于 2013-07-20T04:01:51.340 回答