簡體   English   中英

沒有拋出錯誤但 INSERT 語句不起作用(php,mysql)

[英]No error is thrown but INSERT statement is not working (php,mysql)

執行 INSERT 語句后沒有拋出任何錯誤並且我的數據庫表為空,請有人幫忙!

調用 INSERT 語句的服務文件

客房服務.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);
    }


    ?>

Angular 組件文件,我在其中使用通過表單傳遞的數據調用服務文件。

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('');
    });
  }

}

房間表

客戶回應

您試圖將 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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM