我正在尝试将创建的表单中的数据插入通过ODBC连接的SQL Server数据库表中。提交数据后,它显示为空白行,仅包含具有值的ID。我对PHP非常陌生,并且从教程中获得了部分代码。这只是一个测试项目。这是代码:
<html>
<header>
<title>
</title>
</header>
<body>
<form action="\INSERTCODE.php" method="POST">
<input type= "number" step="any" name="sepal_lengp" placeholder="Sepal Length">
<input type= "number" step="any" name="sepal_widthp" placeholder="Sepal Width">
<input type= "number" step="any" name="petal_lengp" placeholder="Petal Length">
<input type= "number" step="any" name="petal_widthp" placeholder="Petal Width">
<input type= "text" name="flower_type" placeholder="Flower Name">
<button type="submit" name="submit" >INPUT VALUES</button>
</form>
<?php
//display all results from table
include("C:\Users\Dshop\Desktop\php-7.3.3\Server1\connection.php");
$i=1;
$sql = "SELECT * FROM dbo.textcsv";
$result = odbc_exec( $connection, $sql );
while($all =odbc_result_all($result,$i) ){
echo $all;
}
?>
</body>
</html>
这部分包括表格。文件名是index1.php。
<?php
include("C:\Users\Dshop\Desktop\php-7.3.3\Server1\connection.php");
$sepal_lengp = $_POST['sepal_lengp']??'';
$sepal_widthp = $_POST['sepal_widthp']??'';
$petal_lengp = $_POST['petal_lengp']??'';
$petal_widthp = $_POST['petal_widthp']??'';
$flower_typep = $_POST['flower_typep']??'';
$dbinsert = "INSERT INTO dbo.textcsv (sepal_leng, sepal_width, petal_leng, petal_width, flower_type) VALUES ('$sepal_lengp', '$sepal_widthp', '$petal_lengp', '$petal_widthp', '$flower_typep');";
odbc_exec( $connection, $dbinsert );
HEADER("Location: ../index1.php?=success");
这部分将数据插入数据库表,使用$ _POST从index1.php获取数据。该文件称为INSERTCODE.php。 $ connection和connection.php是包含与ODBC的连接的文件。
对于该测试项目,我使用了虹膜数据集。我相信我必须使用ODBC和SQL Server代替mysql。 Sql server是2014版本,PHP是7.33,使用node.js运行服务器。非常感谢您的帮助!
编辑,我发现$ _POST没有从表单中获取任何值。有什么想法吗?
编辑2 我已经尝试使用$ _REQUEST,检查var_dump,并完成了所有这些工作,但是仍然没有任何帮助。在进入https://www.w3schools.com/php7/php7_forms.asp的示例表格后,我发现该示例也不起作用。现在我不确定问题是否出在代码中,还是出自类似php配置之类的问题。需要帮助,请帮助。
答案 0 :(得分:0)
您正在将变量视为字符串,通过数据库的外观,您希望它们为浮点型。尝试在变量上使用floatval()(http://php.net/manual/en/function.floatval.php)以确保它们处于写入格式,这也将对它们进行某种方式的消毒,直到更新它以准备语句,以便您可以安全地绑定值并指定类型
答案 1 :(得分:0)
将问题改写为“ node.js不获取发布数据”后,我发现了问题。 Node.js需要额外的步骤来处理POST数据。因此,因此,node.js忽略了我的输入,并且在运行INSERTDATA.php时没有任何数据可插入任何内容。原来,解决该问题的方法是使用诸如body-parser或其他solution from another question之类的东西。
我采取的解决方案是卸载node.js并改用XAMPP。使用起来容易得多。
还有人可以将我的问题标记为重复吗?