Php My函数成功运行,但数据库显示一行,其中包含零或空格
我正在设计一个crud应用程序,将存储数据存储在数据库中。使用php、mySQL(在XAMPP的帮助下)。不过,我一直遇到这个问题,我在表单上单击“提交”,函数似乎运行成功(我在php页面上看到一条成功消息),但当我查看实际数据库时,无论单击“提交”时表单中有什么内容,该行都会将3个字段(前1个和后2个)填充为“0”。然后其他两列根本没有任何内容 这是我的表单代码:Php My函数成功运行,但数据库显示一行,其中包含零或空格,php,mysql,database,web-applications,crud,Php,Mysql,Database,Web Applications,Crud,我正在设计一个crud应用程序,将存储数据存储在数据库中。使用php、mySQL(在XAMPP的帮助下)。不过,我一直遇到这个问题,我在表单上单击“提交”,函数似乎运行成功(我在php页面上看到一条成功消息),但当我查看实际数据库时,无论单击“提交”时表单中有什么内容,该行都会将3个字段(前1个和后2个)填充为“0”。然后其他两列根本没有任何内容 这是我的表单代码: <div id="newprojform"> <fieldset><legend>Crea
<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>
创建新项目
项目名称:
客户:
移动ID:
计量单位:
挑选
CWT
拱顶
平方英尺
托盘
计件
单位成本:
这里是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);
?>
问题在于您没有将POST指定为表单中的方法,而是试图从$\u POST变量中读取表单变量。有关表单默认值的信息,请参见此线程。要解决此问题,您只需将表单更改为:
<form action='projectadded.php' name="addnewproject" onsubmit="return(validate());" method="POST">
这里还有一些您应该更改的内容,例如在将输入放入数据库之前对其进行清理,但这些并不是问题的根源。问题在于您没有将POST指定为表单中的方法,而是尝试从$\u POST变量中读取表单变量。有关表单默认值的信息,请参见此线程。要解决此问题,您只需将表单更改为:
<form action='projectadded.php' name="addnewproject" onsubmit="return(validate());" method="POST">
在这里,您还应该做一些其他的更改,比如在将输入放入数据库之前对其进行清理,但这些并不是问题的根源。所以,首先要做的是。我不建议在处理数据库时使用未过滤的$\u POST和$\u GET变量(当然是在生产环境中)
其次,在使用表单元素时,必须指定是使用post方法还是get方法:
<form action="location_of_file.php" method="POST">
有时候,SQL可能很敏感
哈哈,该死的。。。肖恩克击败了我。如果我们的建议有效,请选择他的答案,因为他是第一个发布答案的人。所以首先要做的是。我不建议在处理数据库时使用未过滤的$\u POST和$\u GET变量(当然是在生产环境中)
其次,在使用表单元素时,必须指定是使用post方法还是get方法:
<form action="location_of_file.php" method="POST">
有时候,SQL可能很敏感
哈哈,该死的。。。肖恩克击败了我。如果我们建议的工作,选择他的答案,因为他是第一次发布它。 < P>为将来的引用(除了其他答案中的优秀建议),你应该考虑打印$SQL来查看你的实际插入语句看起来是什么样子。您会立即看到您的值是空字符串,并且知道如何追踪$\u POST,以了解它为什么是空的对于未来的引用(除了其他答案中的优秀建议),您应该考虑打印$SQL来查看实际插入语句的外观。您会立即看到您的值是空字符串,并且知道如何追踪$\u POST,以了解它为什么是空的 您正在使用mysqli。。。您不使用参数化查询,甚至不尝试清理查询输入的任何原因???您正在使用mysqli。。。您不使用参数化查询,甚至不尝试清理查询输入的任何原因???