Я работаю над этим проектом, в котором я передаю значения из моего файла Ionic (TypeScript) в базу данных MySQL. Мой PHP дает мне эту ошибку в почтальоне:
<br />
<b>Warning</b>: mysqli_num_rows() expects exactly 1 parameter, 2 given in
<b>C:\xampp2\htdocs\authapp\ddregistration.php</b> on line
<b>19</b>
<br />
insert into info_user values ('','','','');
<br />
<b>Notice</b>: Trying to get property of non-object in
<b>C:\xampp2\htdocs\authapp\ddregistration.php</b> on line
<b>33</b>
<br />
<br />
<b>Notice</b>: Trying to get property of non-object in
<b>C:\xampp2\htdocs\authapp\ddregistration.php</b> on line
<b>33</b>
<br />
[[null,null]]
Я понятия не имею, почему значения не передаются. Так было даже тогда, когда у меня не было предупреждений и уведомлений от php. Я показываю журнал ошибок, чтобы можно было исправить ошибку должным образом.
Это мой файл register.ts
import { Component, ViewChild } from '@angular/core';
import { NavController, AlertController } from 'ionic-angular';
import { HomePage } from '../home/home';
import {Http, Headers, RequestOptions} from "@angular/http";
import { LoadingController } from 'ionic-angular';
import { Device } from '@ionic-native/device';
import 'rxjs/add/operator/map';
@Component({
selector: 'page-register',
templateUrl: 'register.html'
})
export class RegisterPage {
@ViewChild("name") name;
@ViewChild("phone") phone;
@ViewChild("imei") imei;
@ViewChild("status") status;
constructor(public navCtrl: NavController, public alertCtrl: AlertController,
private http: Http, private device: Device, public loading: LoadingController) {
}
Register(){
//// check to confirm the username, email, telephone and password fields are filled
if (this.name.value= = "" ){
let alert = this.alertCtrl.create({
title:"ATTENTION",
subTitle:"Name field is empty",
buttons: ['OK']
});
alert.present();
} else
if (this.phone.value= = "" ){
let alert = this.alertCtrl.create({
title:"ATTENTION",
subTitle:"Mobile number field is empty",
buttons: ['OK']
});
alert.present();
}
else
{
var headers = new Headers();
headers.append("Accept", 'application/json');
headers.append('Content-Type', 'application/json' );
let options = new RequestOptions({ headers: headers });
var data = {
name: this.name.value,
phone: this.phone.value,
imei: this.device.serial,
status:1,
};
let loader = this.loading.create({
content: 'Processing please wait…',
});
loader.present().then(() => {
var myData = JSON.stringify({name: this.name.value,phone: this.phone.value,
imei: this.device.serial,status:1});
console.info("Before",myData);
this.http.post('http://localhost:82/authapp/ddregistration.php',myData, options)
.map(res => res.json())
.subscribe(res => {
loader.dismiss()
if (res= = "Registration successfull"){
let alert = this.alertCtrl.create({
title:"CONGRATS",
subTitle:(res),
buttons: ['OK']
});
alert.present();
this.navCtrl.push(HomePage);
}else
{
let alert = this.alertCtrl.create({
title:"ERROR",
subTitle:(res),
buttons: ['OK']
});
alert.present();
}
});
});
}
}
}
А это мой php скрипт
<?php
require "dbconnect.php";
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);
}
$name = mysqli_real_escape_string($con,$_POST['name']);
$phone = mysqli_real_escape_string($con,$_POST['phone']);
$imei = mysqli_real_escape_string($con,$_POST['imei']);
$status = mysqli_real_escape_string($con,$_POST['status']);
$sql = "select * from info_user where dboy_device_info like '".$imei."';";
$result = mysqli_query($con,$sql);
$response = array();
if (mysqli_num_rows($result)>0)
{
$code = "reg_failed";
$message = "User Exists";
$response = ['code' => $code, 'message' => $message];
echo json_encode($message);
}
else
{
$sql = "insert into info_user (dboy_name,dboy_phone,dboy_device_info,dboy_status)values ('".$name."','".$phone."','".$imei."','".$status."');";
$result = mysqli_query($con,$sql);
$code = "reg_success";
$message = "Registration Success";
$response = ['code' => $code, 'message' => $message];
echo json_encode($message);
}
?>
Я новичок и учусь.
Покажите, пожалуйста, результат var_dump($postdata);.
Пожалуйста, прочтите При каких обстоятельствах я могу добавить к своему вопросу «срочно» или другие похожие фразы, чтобы получить более быстрые ответы? - вкратце, это не идеальный способ обращения к волонтерам и, вероятно, контрпродуктивно для получения ответов. Пожалуйста, воздержитесь от добавления этого к своим вопросам.
Я отредактировал ряд ваших вопросов. Пожалуйста, постарайтесь воздержаться от замечаний, сделанных с целью просить и умолять, или иным образом принуждать читателей к оказанию быстрой / дополнительной помощи в силу того, насколько вы отчаянно или обеспокоены. Так поступать с волонтерами нельзя: у них своя работа и свои дедлайны.






Я думаю тебе это не нужно
$postdata =json_decode(file_get_contents("php://input")) ;
просто получить доступ к данным напрямую вот так
$name = mysqli_real_escape_string($con,$_POST['name']);
Я пробовал это сделать, но данные не вставляются в таблицы
Хорошо, я вижу, не преобразовывайте данные здесь ... var myData = JSON.stringify({name: this.name.value,phone: this.phone.value,imei: this.device.serial,status:1});var myData = {name: this.name.value,phone: this.phone.value,imei: this.device.serial,status:1};
Я отредактировал свой php-скрипт. Он работает нормально, но не вставляет данные, когда находится на онлайн-сервере. локально он вставляет
Передаются только пустые значения
вы получаете ошибку перекрестного происхождения в консоли?
error syntaxerror неожиданный токен <в json в позиции 0 для строки .map (res => res.json ()). он отлично работает на почтальоне
array_push($response,array("code"->$code,"message"->$message));не является допустимым php. Должен бытьarray_push($response,array("code" => $code,"message" => $message));или даже лучше$response = ['code' => $code, 'message' => $message];