Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 插入两条数据库记录,包括空行_Php_Mysql_Angular_Ionic Framework - Fatal编程技术网

Php 插入两条数据库记录,包括空行

Php 插入两条数据库记录,包括空行,php,mysql,angular,ionic-framework,Php,Mysql,Angular,Ionic Framework,我正在从事一个项目,该项目是使用Angular和PHPAPI以及MySQL数据库开发的Ionic应用程序 我的项目有两个问题 此应用程序在数据库中插入两行,一行为完全空,另一行为实际值 此应用程序数据库响应返回observable始终返回到错误,不是为了成功 我尝试了很多方法来解决这个问题,但是我找不到错误点 这是我的html视图代码: <ion-content padding> <!--class="items-middle" text-center--> <io

我正在从事一个项目,该项目是使用Angular和PHPAPI以及MySQL数据库开发的Ionic应用程序

我的项目有两个问题

  • 此应用程序在数据库中插入两行,一行为完全空,另一行为实际值

  • 此应用程序数据库响应返回observable始终返回到错误,不是为了成功

  • 我尝试了很多方法来解决这个问题,但是我找不到错误点

    这是我的html视图代码:

    <ion-content padding>
    <!--class="items-middle" text-center-->
    <ion-list>
        {{ responseTxt | json }}
        {{ errorTxt | json }}
        <!-- use the [formGroup] directive to tell Angular that we want to use the registrationForm as the "FormGroup" for this form: -->
        <form [formGroup]="registrationForm" (ngSubmit)="addMember()">
            <ion-item>
                <ion-label floating>Full Name</ion-label>
                <ion-input type="text" [(ngModel)]="reg.userName" formControlName="userName"></ion-input>
            </ion-item>
            <p class="text-danger" *ngIf="registrationForm.controls.userName.touched && (registrationForm.controls.userName.invalid ||
            registrationForm.controls.userName.hasError('pattern'))">Enter valid username.</p>
    
            <ion-item>
                <ion-label color="ligh-grey" floating>Email</ion-label>
                <ion-input type="email" [(ngModel)]="reg.email" formControlName="email"></ion-input>
            </ion-item>
            <p class="text-danger" *ngIf="registrationForm.controls.email.touched && (registrationForm.controls.email.invalid ||
            registrationForm.controls.email.hasError('pattern'))">Enter valid email.</p>
    
            <ion-item>
            <ion-label color="ligh-grey" floating>Birth of Date</ion-label>
            <ion-datetime displayFormat="DD/MM/YYYY" formControlName="dob" [(ngModel)]="reg.dob" pickerFormat="MMMM DD YYYY" min="1940" max="{{year}}">
            </ion-datetime>
            </ion-item>
            <p class="text-danger" *ngIf="registrationForm.controls.dob.touched && (registrationForm.controls.dob.invalid)">Enter your Date of Birth</p>
    
            <ion-item>
                <ion-label color="ligh-grey" floating>Phone Number</ion-label>
                <ion-input type="number" formControlName="phone" [(ngModel)]="reg.phone" pattern="[0-9]*"></ion-input>
            </ion-item>
            <p class="text-danger" *ngIf="registrationForm.controls.phone.touched && (registrationForm.controls.phone.invalid ||
            registrationForm.controls.phone.hasError('pattern'))">Enter valid phone number.</p>
    
            <ion-item>
                <ion-label color="ligh-grey" floating>Address</ion-label>
                <ion-input type="text" formControlName="address" [(ngModel)]="reg.address"></ion-input>
            </ion-item>
            <p class="text-danger" *ngIf="registrationForm.controls.address.touched && (registrationForm.controls.address.invalid)">Enter valid address.</p>
    
            <ion-item class="job_status">
                <ion-label color="ligh-grey" floating>Job Status (Position)</ion-label>
                <ion-input type="text" formControlName="jobStatus" [(ngModel)]="reg.jobStatus"></ion-input>
            </ion-item>
            <p class="text-danger" *ngIf="registrationForm.controls.jobStatus.touched && (registrationForm.controls.jobStatus.invalid)">Enter valid job status.</p>
    
            <ion-item>
                <ion-label>Job Sector</ion-label>
                <ion-select formControlName="jobSector" [(ngModel)]="reg.jobSector">
                    <ion-option value="Government">Government</ion-option>
                    <ion-option value="Private">Private</ion-option>
                </ion-select>
            </ion-item>
            <p class="text-danger" *ngIf="registrationForm.controls.jobSector.touched && (registrationForm.controls.jobSector.invalid)">Choose a job sector.</p>
    
            <!--<input type="checkbox" formControlName="isTosRead">-->
            <!-- We can check if our form is valid: -->
            <ion-buttons padding-top>
                <button ion-button full round type="submit" [disabled]="!registrationForm.valid">SIGNUP</button>
            </ion-buttons>
        </form>
    </ion-list>
    
    这是提供程序(服务)ts文件

    从'@angular/common/http'导入{HttpClient,HttpErrorResponse};
    从“@angular/core”导入{Injectable};
    从“../../pages/registration/Reg”导入{Reg}”;
    从“rxjs”导入{observeable};
    从“rxjs/operators”导入{catchError,map};
    从“rxjs/observable/throw”导入{u throw};
    从“../../pages/registration/registration”导入{RegistrationPage}”;
    @可注射()
    导出类NetworkingInProvider{
    baseUrl=http://localhost/api';
    注册:注册号[];
    obj:注册页面;
    构造函数(公共http:HttpClient){
    }
    //实际处理远程服务器php文件并返回承诺的方法
    readTableData():承诺


    我粘贴了所有代码,因为我无法预测错误在哪里。

    我在这里找到了错误

    如果我在time$\u POST给出null的标题下使用$\u POST[]方法

    为了避免这个问题,我们可以在像这样的标题之前使用$\u POST

    <?php
          $postdata = file_get_contents("php://input",true);
          $request = json_decode($postdata);
          // Sanitize.s
          $userName = $request->data->userName;
          $email = $request->data->email;
          $dob = $request->data->dob;
          $phone = $request->data->phone;
          $address = $request->data->address;
          $jobStatus = $request->data->jobStatus;
          $jobSector = $request->data->jobSector;
    
          header('Access-Control-Allow-Origin: *');
          header('Access-Control-Allow-Methods: GET, POST, OPTIONS');
          header('Access-Control-Allow-Headers: Content-Type,x-prototype-version,x-requested-with');
    

    在设置标题之前使用_POST方法。
    
    否则它将无法获得您传递的值。

    您只需在将变量传递到bind_param方法之前测试变量:
    if(isset($request->data->email)){//do mysql insert}
    谢谢您的建议,先生,这只是为了安全和确认,对吗?但这就是问题的原因?使用前测试变量这是提高代码质量的一个良好做法
            import {HttpClient, HttpErrorResponse} from '@angular/common/http';
        import { Injectable } from '@angular/core';
        import { Reg } from "../../pages/registration/Reg";
        import {Observable} from "rxjs";
        import {catchError, map} from "rxjs/operators";
        import {_throw} from 'rxjs/observable/throw';
        import { RegistrationPage } from "../../pages/registration/registration";
    
        @Injectable()
        export class NetworkEngineProvider {
          baseUrl = 'http://localhost/api';
          registrations: Reg[];
          obj : RegistrationPage;
    
          constructor(public http: HttpClient) {
          }
          // The method which actually dealing with remote server php file and that return promise
          readTableData() : Promise<any>{
            let url = "http://localhost/ctest/ionic/read.php";
            let request = this.http.get(url);
            return request.toPromise();
          }
          //regUser(reg : Reg): Promise<any>{
            // return this.http.post(`${this.baseUrl}/registration`, { data: reg })
            //   .pipe(map((res) => {
            //     this.registrations.push(res['data']);
            //     return this.registrations;
            //   }),
            //   catchError(this.handleError(HttpErrorResponse));
              //catchError(this.handleError));
            //let request = this.http.post(`${this.baseUrl}/registration`,{ data: reg });
            //return request.toPromise();
          //}
          regUser(reg : Reg): Observable<any> {
            return this.http.post(`${this.baseUrl}/registration.php`, { data: reg })
              .pipe(map((res) => {
                return res;
              }))
          }
        }
    
            <?php
    
          header('Access-Control-Allow-Origin: *');
          header('Access-Control-Allow-Methods: GET, POST, OPTIONS');
          header('Access-Control-Allow-Headers: Content-Type,x-prototype-version,x-requested-with');
    
          $servername = "localhost";
          $username = "root";
          $password = "";
          $dbname = "hoba";
    
          // Create connection
          $conn = new mysqli($servername, $username, $password, $dbname);
    
          // Check connection
          if ($conn->connect_error) {
            die("Connection failed: " . $conn->connect_error);
          }
          mysqli_set_charset($conn, "utf8");
    
          $postdata = file_get_contents("php://input");
          $request = json_decode($postdata);
          // Sanitize.
            $userName = $request->data->userName;
            $email = $request->data->email;
            $dob = $request->data->dob;
            $phone = $request->data->phone;
            $address = $request->data->address;
            $jobStatus = $request->data->jobStatus;
            $jobSector = $request->data->jobSector;
    
          // Store.
          $stmt = $conn->prepare("INSERT INTO user_profile (user_name,email,dob,address,phone_number,job_status,gov_or_pvt) 
                                VALUES (?,?,?,?,?,?,?)");
          $stmt->bind_param("sssssss", $userName, $email,$dob,$phone,$address,$jobStatus,$jobSector);
    
    
          if ($stmt->execute())
          {
              //echo http_response_code(201);
              echo "New record created successfully";
          } else {
              //echo http_response_code(422);
            echo "Some error";
           // echo "Error: " . $sql . "<br>" . $conn->error;
          }
    
    <?php
          $postdata = file_get_contents("php://input",true);
          $request = json_decode($postdata);
          // Sanitize.s
          $userName = $request->data->userName;
          $email = $request->data->email;
          $dob = $request->data->dob;
          $phone = $request->data->phone;
          $address = $request->data->address;
          $jobStatus = $request->data->jobStatus;
          $jobSector = $request->data->jobSector;
    
          header('Access-Control-Allow-Origin: *');
          header('Access-Control-Allow-Methods: GET, POST, OPTIONS');
          header('Access-Control-Allow-Headers: Content-Type,x-prototype-version,x-requested-with');