Не выдается никакой ошибки, но оператор INSERT не работает (php, mysql) - PullRequest
0 голосов
/ 28 февраля 2019

После выполнения оператора INSERT не выдается ни одной ошибки, и моя таблица базы данных пуста, кто-нибудь, помогите, пожалуйста!

Сервисный файл для вызова оператора INSERT

roomservice.php

<?php
    header("Access-Control-Allow-Headers: *");
    header("Access-Control-Allow-Origin: *");
    header('Access-Control-Allow-Methods: GET, POST');  

   if(isset($_POST['hotelName']) && isset($_POST['hasTV']) && 
                            isset($_POST['beds']) && isset($_POST['price'])){

    $roomName = $_POST['hotelName'];
    $hasTV = $_POST['hasTV'];
    $beds = $_POST['beds'];
    $price = $_POST['price'];
     echo addRoom($roomName,$hasTV,$beds,$price);

    }

    function addRoom($hotelName, $hasTV, $beds , $price){
        global $conn;
        $rarray = array();
        $stmt = $conn->prepare("INSERT INTO rooms (hotelname, hastv, beds, price) VALUES (?, ?, ?, ?)");
        $stmt->bind_param("sss", $hotelName, $hasTV, $beds , $price);
        if($stmt->execute()){
            $rarray['sucess'] = "okej";
        }else{
            $rarray['error'] = "Database connection error";
        }
        return json_encode($rarray);
    }


    ?>

Файл углового компонента, в котором я вызываю служебный файл с данными, переданными через форму.

addroom.component.ts

public addRoom() {
    const body = new HttpParams()
    .set('hotelname', this.roomForm.value.hotelName)
    .set('hastv', this.roomForm.value.hasTV)
    .set('beds', this.roomForm.value.beds)
    .set('price', this.roomForm.value.price);
    console.log(body.toString());
    this._api.post('roomservice.php', body.toString()).subscribe((data: any) => {
      console.log(data);
      // localStorage.setItem('token', JSON.parse(data['_body']).token);
      this._router.navigate(['./']);
    }, (error) => {
      const obj = JSON.parse(error['_body']).error;
      const element  = <HTMLElement> document.getElementsByClassName('alert')[0];
      element.style.display = 'block';
      element.innerHTML = obj.split('\\r\\n').join('<br/>').split('\"').join('');
    });
  }

}

таблица номеров

ответ клиента

1 Ответ

0 голосов
/ 28 февраля 2019

Вы пытаетесь передать 4 аргумента в функцию связывания, но вы ввели только 3 параметра.Вот почему он не работает.

Решение состоит в том, чтобы изменить эти две строки:

$stmt = $conn->prepare("INSERT INTO rooms (hotelname, hastv, beds, price) VALUES (?, ?, ?, ?)");
        $stmt->bind_param("sss", $hotelName, $hasTV, $beds , $price);

на:

$stmt = $conn->prepare("INSERT INTO `rooms` (`hotelname`, `hastv`, `beds`, `price`) VALUES (?, ?, ?, ?)");
        $stmt->bind_param("ssss", $hotelName, $hasTV, $beds , $price);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...