PHP вставка данных в таблицу базы данных SQL создает пустую строку - PullRequest
1 голос
/ 22 марта 2019

Я пытаюсь вставить данные из формы, созданной в таблицу базы данных SQL Server, которая подключена через ODBC. После того, как я отправляю данные, они отображаются в виде пустой строки с идентификатором, имеющим значение. Я очень новичок в 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 and connection.php - это файл, который включает соединение с ODBC.

What it looks like in the SQL Server Management Studio

Для этого тестового проекта я использовал набор данных Iris. Я считаю, что мне пришлось использовать 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 голосов
/ 29 марта 2019

После перефразирования моей проблемы в "node.js не принимает данные постов" я обнаружил проблему. Node.js нужны дополнительные шаги для обработки данных POST. Поэтому из-за этого мои входные данные были проигнорированы node.js, и INSERTDATA.php запустился без каких-либо данных для вставки чего-либо. Оказывается, решением проблемы было использование чего-то вроде body-parser или другого решения из другого вопроса .

Я решил удалить node.js и использовать вместо него XAMPP. Это было намного проще в использовании.

Также кто-то может пометить мой вопрос на дубликат?

0 голосов
/ 22 марта 2019

вы обрабатываете свои переменные как строки, и, глядя на вашу базу данных, вы хотите, чтобы они были плавающими. Попробуйте использовать floatval () (http://php.net/manual/en/function.floatval.php) для ваших переменных, чтобы убедиться, что они находятся в формате записи, это также будет способствовать их дезинфекции, пока вы не обновите это, чтобы подготовить операторы, чтобы вы могли безопасно связать значения и указать тип

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...