PHP将数据插入SQL数据库表会产生空白行

时间:2019-03-22 14:32:14

标签: php sql sql-server odbc

我正在尝试将创建的表单中的数据插入通过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的连接的文件。

What it looks like in the SQL Server Management Studio

对于该测试项目,我使用了虹膜数据集。我相信我必须使用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配置之类的问题。需要帮助,请帮助。

2 个答案:

答案 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。使用起来容易得多。

还有人可以将我的问题标记为重复吗?