Php Ionic 3将数据发布到Mysql

Php Ionic 3将数据发布到Mysql,php,angular,typescript,ionic3,Php,Angular,Typescript,Ionic3,我是离子3的新手,我想将用户名数据提交到mysql。我正在使用以下代码,它不显示任何错误消息,但它不显示提交到api.php文件的值。如何在下面的api.php文件中使用Insert命令 contact.html <ion-header> <ion-navbar> <button ion-button menuToggle> <ion-icon name="menu"></ion-icon> </b

我是离子3的新手,我想将用户名数据提交到mysql。我正在使用以下代码,它不显示任何错误消息,但它不显示提交到api.php文件的值。如何在下面的api.php文件中使用Insert命令

contact.html

<ion-header>
  <ion-navbar>
    <button ion-button menuToggle>
      <ion-icon name="menu"></ion-icon>
    </button>
    <ion-title>My Contact</ion-title>
  </ion-navbar>
</ion-header>

<ion-content padding>
 <ion-list>
  <ion-item>
    <ion-label floating>Username</ion-label>
    <ion-input type="text" name="username" [(ngModel)]="data.username"></ion-input>
  </ion-item>
<button ion-button color="danger" round (click)="submit()">Submit</button>
<button ion-button color="primary" menuToggle>Toggle Menu</button>
</ion-list>
  </ion-content>
api.php

<?php
    // Allow from any origin
    if (isset($_SERVER['HTTP_ORIGIN'])) {
        header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
        header('Access-Control-Allow-Credentials: true');
        header('Access-Control-Max-Age: 86400');    // cache for 1 day
    }

    // Access-Control headers are received during OPTIONS requests
    if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {

        if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
            header("Access-Control-Allow-Methods: GET, POST, OPTIONS");         

        if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
            header("Access-Control-Allow-Headers:        {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");

        exit(0);
    }

    echo "You have CORS!";

    $postdata = file_get_contents("php://input");
    if (isset($postdata)) {
        $request = json_decode($postdata);
        $username = $request->username;
        echo "hello how are you"
        if ($username != "") {
            echo "Server returns: " . $username;
        }
        else {
            echo "Empty username parameter!";
        }
    }
    else {
        echo "Not called properly with username parameter!";
    }
?>

首先你做的
post()
不对。其次,您已经针对基于提供商的ArcArchitecture进行了此操作。这是非常糟糕的

我强烈建议查看以下链接以了解基于提供商的体系结构

您的
post()
方法应该如下所示:

myProvider.ts

post(url:string,body:string):可观察{
let headers=新的headers();
headers.append('content-type','application/json');
let options=newrequestoptions({headers:headers});
返回this.http.post(url、正文、选项)
.map(此.extractData)
.接住(这个.把手错误);
}
//提取数据
私有数据(res:Response){
让body=res.json();
返回体| |{};
}
//处理错误
私有句柄错误(错误:响应|任意){
让errMsg:string;
if(响应的错误实例){
const body=error.json();
const err=body.error | | JSON.stringify(body);
errMsg=`${error.status}-${error.statusText | |'''}${err}`;
}否则{
errMsg=error.message?error.message:error.toString();
}
控制台错误(errMsg);
返回可观察抛出(errMsg);
}

首先,您做错了
post()。其次,您已经针对基于提供商的ArcArchitecture进行了此操作。这是非常糟糕的

我强烈建议查看以下链接以了解基于提供商的体系结构

您的
post()
方法应该如下所示:

myProvider.ts

post(url:string,body:string):可观察{
let headers=新的headers();
headers.append('content-type','application/json');
let options=newrequestoptions({headers:headers});
返回this.http.post(url、正文、选项)
.map(此.extractData)
.接住(这个.把手错误);
}
//提取数据
私有数据(res:Response){
让body=res.json();
返回体| |{};
}
//处理错误
私有句柄错误(错误:响应|任意){
让errMsg:string;
if(响应的错误实例){
const body=error.json();
const err=body.error | | JSON.stringify(body);
errMsg=`${error.status}-${error.statusText | |'''}${err}`;
}否则{
errMsg=error.message?error.message:error.toString();
}
控制台错误(errMsg);
返回可观察抛出(errMsg);
}

我从中复制了上面的代码,它对一些用户有效。这是一个非常简单的代码,所以我想让它运行,不想对它进行任何重大修改。我认为从contact.ts文件(var link='../contact/api.php';)调用api.php文件时会出现一些问题。这个文件可能无法从contact.ts访问。谢谢你的回复,我从中复制了上面的代码,它对一些用户有效。这是一个非常简单的代码,所以我想让它运行,不想对它做任何重大修改。我认为从contact.ts文件(var link='../contact/api.php';)调用api.php文件时会出现一些问题。这个文件可能无法从contact.ts访问。谢谢你的回复
<?php
    // Allow from any origin
    if (isset($_SERVER['HTTP_ORIGIN'])) {
        header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
        header('Access-Control-Allow-Credentials: true');
        header('Access-Control-Max-Age: 86400');    // cache for 1 day
    }

    // Access-Control headers are received during OPTIONS requests
    if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {

        if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
            header("Access-Control-Allow-Methods: GET, POST, OPTIONS");         

        if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
            header("Access-Control-Allow-Headers:        {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");

        exit(0);
    }

    echo "You have CORS!";

    $postdata = file_get_contents("php://input");
    if (isset($postdata)) {
        $request = json_decode($postdata);
        $username = $request->username;
        echo "hello how are you"
        if ($username != "") {
            echo "Server returns: " . $username;
        }
        else {
            echo "Empty username parameter!";
        }
    }
    else {
        echo "Not called properly with username parameter!";
    }
?>
 post(url: string, body: string): Observable<any> {
    let headers = new Headers();
    headers.append('content-type', 'application/json');
    let options = new RequestOptions({ headers: headers });
    return this.http.post(url, body, options)
      .map(this.extractData)
      .catch(this.handleError);
  }


  //to extract data
  private extractData(res: Response) {
    let body = res.json();
    return body || {};
  }

  //to handle error
  private handleError(error: Response | any) {
    let errMsg: string;
    if (error instanceof Response) {
      const body = error.json() || '';
      const err = body.error || JSON.stringify(body);
      errMsg = `${error.status} - ${error.statusText || ''} ${err}`;
    } else {
      errMsg = error.message ? error.message : error.toString();
    }
    console.error(errMsg);
    return Observable.throw(errMsg);
  }