我之前在本地跑过,我可以发布到本地服务器.
现在我在实时服务器上尝试它,我收到以下错误:
Unable to create Reservation.
只要无法发布到服务器,就会从create.PHP页面发布此错误.
有人知道我的代码有什么问题吗?
<?PHP // required headers header("Access-Control-Allow-Origin: *"); header("Content-Type: application/json; charset=UTF-8"); header("Access-Control-Allow-Methods: POST"); header("Access-Control-Max-Age: 3600"); header("Access-Control-Allow-Headers: Content-Type,Access-Control-Allow-Headers,Authorization,X-Requested-With"); // get database connection include_once '../config/database.PHP'; // instantiate reservation object include_once '../objects/reserve.PHP'; $database = new Database(); $db = $database->getConnection(); $reservation = new Reservation($db); // get posted data $data = json_decode(file_get_contents("PHP://input")); // set product property values $reservation->name = $data->name; $reservation->eMail = $data->eMail; $reservation->phoneNumber = $data->phoneNumber; $reservation->colorScooter = $data->colorScooter; $reservation->amountScooters = $data->amountScooters; $reservation->inputDate = $data->inputDate; $reservation->returnDate = $data->returnDate; $reservation->category_id = $data->category_id; $reservation->created = date('Y-m-d H:i:s'); // create the reservation if($reservation->create()){ echo '{'; echo '"message": "Reservation was created."'; echo '}'; } // if unable to create the reservation,tell the user else{ echo '{'; echo '"message": "Unable to create Reservation."'; echo '}'; } ?>
编辑02-08-18
它似乎没有设置属性值.
// set product property values $reservation->name = $data->name; $reservation->eMail = $data->eMail; $reservation->phoneNumber = $data->phoneNumber; $reservation->colorScooter = $data->colorScooter; $reservation->amountScooters = $data->amountScooters; $reservation->inputDate = $data->inputDate; $reservation->returnDate = $data->returnDate; $reservation->category_id = $data->category_id; $reservation->created = date('Y-m-d H:i:s');
我在运行create.PHP live vs local时打开这个
本地
<br /> <b>Notice</b>: Trying to get property of non-object in <b>C:\xampp\htdocs\api2\reserve\update.PHP</b> on line <b>24</b><br /> <br /> <b>Notice</b>: Trying to get property of non-object in <b>C:\xampp\htdocs\api2\reserve\update.PHP</b> on line <b>27</b><br /> <br /> <b>Notice</b>: Trying to get property of non-object in <b>C:\xampp\htdocs\api2\reserve\update.PHP</b> on line <b>28</b><br /> <br /> <b>Notice</b>: Trying to get property of non-object in <b>C:\xampp\htdocs\api2\reserve\update.PHP</b> on line <b>29</b><br /> <br /> <b>Notice</b>: Trying to get property of non-object in <b>C:\xampp\htdocs\api2\reserve\update.PHP</b> on line <b>30</b><br /> <br /> <b>Notice</b>: Trying to get property of non-object in <b>C:\xampp\htdocs\api2\reserve\update.PHP</b> on line <b>31</b><br /> <br /> <b>Notice</b>: Trying to get property of non-object in <b>C:\xampp\htdocs\api2\reserve\update.PHP</b> on line <b>32</b><br /> <br /> <b>Notice</b>: Trying to get property of non-object in <b>C:\xampp\htdocs\api2\reserve\update.PHP</b> on line <b>33</b><br /> <br /> <b>Notice</b>: Trying to get property of non-object in <b>C:\xampp\htdocs\api2\reserve\update.PHP</b> on line <b>34</b><br /> <br /> <b>Notice</b>: Trying to get property of non-object in <b>C:\xampp\htdocs\api2\reserve\update.PHP</b> on line <b>35</b><br /> {"message": "Unable to update reservation."}
生活
{"message": "Unable to update reservation."}
它似乎在现场它不寻找房产价值
在HP 7.0上运行(7.0.28)
添加:
ini_set(‘display_errors’,1);
ini_set(‘display_startup_errors’,1);
使用error_reporting(E_ALL);
Trying to get property of non-object in /var/www/vhosts/128/313118/webspace/httpdocs/e-citywheels.com/new/api2/reserve/create.PHP on line 32
<?PHP class Reservation{ // database connection and table name private $conn; private $table_name = "reservations"; // object properties public $id; public $name; public $eMail; public $phoneNumber; public $colorScooter; public $amountScooters; public $inputDate; public $returnDate; public $category_name; public $created; // constructor with $db as database connection public function __construct($db){ $this->conn = $db; } // read reservations function read(){ // select all query $query = "SELECT c.name as category_name,p.id,p.name,p.eMail,p.phoneNumber,p.colorScooter,p.amountScooters,p.inputDate,p.returnDate,p.category_id,p.created FROM " . $this->table_name . " p LEFT JOIN categories c ON p.category_id = c.id ORDER BY p.created DESC"; // prepare query statement $stmt = $this->conn->prepare($query); // execute query $stmt->execute(); return $stmt; } // create product function create(){ // query to insert record $query = "INSERT INTO " . $this->table_name . " SET name=:name,eMail=:eMail,phoneNumber=:phoneNumber,colorScooter=:colorScooter,amountScooters=:amountScooters,inputDate=:inputDate,returnDate=:returnDate,category_id=:category_id,created=:created"; // prepare query $stmt = $this->conn->prepare($query); // sanitize $this->name=htmlspecialchars(strip_tags($this->name)); $this->eMail=htmlspecialchars(strip_tags($this->eMail)); $this->phoneNumber=htmlspecialchars(strip_tags($this->phoneNumber)); $this->colorScooter=htmlspecialchars(strip_tags($this->colorScooter)); $this->amountScooters=htmlspecialchars(strip_tags($this->amountScooters)); $this->inputDate=htmlspecialchars(strip_tags($this->inputDate)); $this->inputDate=htmlspecialchars(strip_tags($this->returnDate)); $this->category_id=htmlspecialchars(strip_tags($this->category_id)); $this->created=htmlspecialchars(strip_tags($this->created)); // bind values $stmt->bindParam(":name",$this->name); $stmt->bindParam(":eMail",$this->eMail); $stmt->bindParam(":phoneNumber",$this->phoneNumber); $stmt->bindParam(":colorScooter",$this->colorScooter); $stmt->bindParam(":amountScooters",$this->amountScooters); $stmt->bindParam(":inputDate",$this->inputDate); $stmt->bindParam(":returnDate",$this->returnDate); $stmt->bindParam(":category_id",$this->category_id); $stmt->bindParam(":created",$this->created); // execute query if($stmt->execute()){ return true; } return false; } // used when filling up the update product form function readOne(){ // query to read single record $query = "SELECT c.name as category_name,p.created FROM " . $this->table_name . " p LEFT JOIN categories c ON p.category_id = c.id WHERE p.id = ? LIMIT 0,1"; // prepare query statement $stmt = $this->conn->prepare( $query ); // bind id of product to be updated $stmt->bindParam(1,$this->id); // execute query $stmt->execute(); // get retrieved row $row = $stmt->fetch(PDO::FETCH_ASSOC); // set values to object properties $this->name = $row['name']; $this->eMail = $row['eMail']; $this->phoneNumber = $row['phoneNumber']; $this->colorScooter = $row['colorScooter']; $this->amountScooters = $row['amountScooters']; $this->inputDate = $row['inputDate']; $this->returnDate = $row['returnDate']; $this->category_id = $row['category_id']; $this->category_name = $row['category_name']; } // update the product function update(){ // update query $query = "UPDATE " . $this->table_name . " SET name = :name,eMail = :eMail,phoneNumber = :phoneNumber,colorScooter = :colorScooter amountScooters = :amountScooters,inputDate = :inputDate,returnDate = :returnDate,category_id = :category_id WHERE id = :id"; // prepare query statement $stmt = $this->conn->prepare($query); // sanitize $this->name=htmlspecialchars(strip_tags($this->name)); $this->eMail=htmlspecialchars(strip_tags($this->eMail)); $this->phoneNumber=htmlspecialchars(strip_tags($this->phoneNumber)); $this->colorScooter=htmlspecialchars(strip_tags($this->colorScooter)); $this->amountScooters=htmlspecialchars(strip_tags($this->amountScooters)); $this->inputDate=htmlspecialchars(strip_tags($this->inputDate)); $this->inputDate=htmlspecialchars(strip_tags($this->returnDate)); $this->category_id=htmlspecialchars(strip_tags($this->category_id)); $this->id=htmlspecialchars(strip_tags($this->id)); // bind new values $stmt->bindParam(":name",$this->returnDate); $stmt->bindParam(':category_id',$this->category_id); $stmt->bindParam(':id',$this->id); // execute the query if($stmt->execute()){ return true; } return false; } // delete the product function delete(){ // delete query $query = "DELETE FROM " . $this->table_name . " WHERE id = ?"; // prepare query $stmt = $this->conn->prepare($query); // sanitize $this->id=htmlspecialchars(strip_tags($this->id)); // bind id of record to delete $stmt->bindParam(1,$this->id); // execute query if($stmt->execute()){ return true; } return false; } // search products function search($keywords){ // select all query $query = "SELECT c.name as category_name,p.created FROM " . $this->table_name . " p LEFT JOIN categories c ON p.category_id = c.id WHERE p.name LIKE ? OR p.description LIKE ? OR c.name LIKE ? ORDER BY p.created DESC"; // prepare query statement $stmt = $this->conn->prepare($query); // sanitize $keywords=htmlspecialchars(strip_tags($keywords)); $keywords = "%{$keywords}%"; // bind $stmt->bindParam(1,$keywords); $stmt->bindParam(2,$keywords); $stmt->bindParam(3,$keywords); // execute query $stmt->execute(); return $stmt; } // read products with pagination public function readPaging($from_record_num,$records_per_page){ // select query $query = "SELECT c.name as category_name,p.created FROM " . $this->table_name . " p LEFT JOIN categories c ON p.category_id = c.id ORDER BY p.created DESC LIMIT ?,?"; // prepare query statement $stmt = $this->conn->prepare( $query ); // bind variable values $stmt->bindParam(1,$from_record_num,PDO::PARAM_INT); $stmt->bindParam(2,$records_per_page,PDO::PARAM_INT); // execute query $stmt->execute(); // return values from database return $stmt; } // used for paging products public function count(){ $query = "SELECT COUNT(*) as total_rows FROM " . $this->table_name . ""; $stmt = $this->conn->prepare( $query ); $stmt->execute(); $row = $stmt->fetch(PDO::FETCH_ASSOC); return $row['total_rows']; } }
已添加11-08-2018
添加var_dump($product);结果显示变量$product确实返回表,$data实际上是问题所在.
var_dump的结果($product);
["table_name":"Product":private]=> string(8) "products" ["id"]=> NULL ["name"]=> NULL ["email"]=> NULL ["phone"]=> NULL ["amount"]=> NULL ["description"]=> NULL ["pickup"]=> NULL ["back"]=> NULL ["category_id"]=> NULL ["category_name"]=> NULL ["created"]=> NULL
Current status
如果我打开create.PHP文件,它确实会创建一个产品,但如果我使用该表单,我会收到错误无法创建产品.
此外,当我打开create.PHP文件时,我收到以下错误消息:
<br /> <b>Notice</b>: Trying to get property of non-object in <b>C:\xampp\htdocs\api\product\create.PHP</b> on line <b>37</b><br /> <br /> <b>Notice</b>: Trying to get property of non-object in <b>C:\xampp\htdocs\api\product\create.PHP</b> on line <b>38</b><br /> <br /> <b>Notice</b>: Trying to get property of non-object in <b>C:\xampp\htdocs\api\product\create.PHP</b> on line <b>39</b><br /> <br /> <b>Notice</b>: Trying to get property of non-object in <b>C:\xampp\htdocs\api\product\create.PHP</b> on line <b>40</b><br /> <br /> <b>Notice</b>: Trying to get property of non-object in <b>C:\xampp\htdocs\api\product\create.PHP</b> on line <b>41</b><br /> <br /> <b>Notice</b>: Trying to get property of non-object in <b>C:\xampp\htdocs\api\product\create.PHP</b> on line <b>42</b><br /> <br /> <b>Notice</b>: Trying to get property of non-object in <b>C:\xampp\htdocs\api\product\create.PHP</b> on line <b>43</b><br /> <br /> <b>Notice</b>: Trying to get property of non-object in <b>C:\xampp\htdocs\api\product\create.PHP</b> on line <b>44</b><br />
我有这个想法导致这个问题,
厂
// create product factory.createProduct = function($scope){ return $http({ method: 'POST',data: { 'name' : $scope.name,'email' : $scope.email,'phone' : $scope.phone,'amount' : $scope.amount,'description' : $scope.description,'pickup' : $scope.pickup,'back' : $scope.back,'category_id' : 1 },url: 'http://localhost/api/product/create.PHP' }); };
我的控制器
// create new product $scope.createProduct = function(){ productsFactory.createProduct($scope).then(function successCallback(response){ // tell the user new product was created $scope.showToast(response.data.message); // refresh the list $scope.readProducts(); // close dialog $scope.cancel(); // remove form values $scope.clearProductForm(); },function errorCallback(response){ $scope.showToast("Unable to create record."); }); }
product.PHP
// create product function create(){ // query to insert record // $query = "INSERT INTO " . $this->table_name . // "(name,email,phone,amount,description,pickup,back,created,modified)" . // " VALUES(:name,:email,:phone,:amount,:description,:pickup,:back,:created,:modified)"; $query = "INSERT INTO " . $this->table_name . " SET name=:name,email=:email,phone=:phone,amount=:amount,description=:description,pickup=:pickup,back=:back,created=:created"; // prepare query $stmt = $this->conn->prepare($query); // sanitize $this->name=htmlspecialchars(strip_tags($this->name)); $this->email=htmlspecialchars(strip_tags($this->email)); $this->phone=htmlspecialchars(strip_tags($this->phone)); $this->amount=htmlspecialchars(strip_tags($this->amount)); $this->description=htmlspecialchars(strip_tags($this->description)); $this->pickup=htmlspecialchars(strip_tags($this->pickup)); $this->back=htmlspecialchars(strip_tags($this->back)); $this->category_id=htmlspecialchars(strip_tags($this->category_id)); $this->created=htmlspecialchars(strip_tags($this->created)); // bind values $stmt->bindParam(":name",$this->name); $stmt->bindParam(":email",$this->email); $stmt->bindParam(":phone",$this->phone); $stmt->bindParam(":amount",$this->amount); $stmt->bindParam(":description",$this->description); $stmt->bindParam(":pickup",$this->pickup); $stmt->bindParam(":back",$this->back); $stmt->bindParam(":category_id",$this->category_id); $stmt->bindParam(":created",$this->created); // execute query if($stmt->execute()){ return true; } return false; }
Create.PHP
<?PHP // required headers header("Access-Control-Allow-Origin: *"); header("Content-Type: application/json; charset=UTF-8"); header("Access-Control-Allow-Methods: POST"); header("Access-Control-Max-Age: 3600"); header("Access-Control-Allow-Headers: Content-Type,X-Requested-With"); // get database connection include_once '../config/database.PHP'; // instantiate product object include_once '../objects/product.PHP'; $database = new Database(); $db = $database->getConnection(); $product = new Product($db); // get posted data $data = json_decode(file_get_contents("PHP://input")); echo $data; var_dump($data); var_dump($product); print_r($data); var_dump($product->name); // set product property values $product->name = $data->name; $product->email = $data->email; $product->phone = $data->phone; $product->amount = $data->amount; $product->description = $data->description; $product->pickup = $data->pickup; $product->back = $data->back; $product->category_id = $data->category_id; $product->created = date('Y-m-d H:i:s'); var_dump($product->name); var_dump($data->name); echo is_array($product->name) ? 'Array' : 'not an Array'; echo json_last_error(); // create the product if($product->create()){ echo '{'; echo '"message": "Product was created."'; echo '}'; } // if unable to create the product,tell the user else{ echo '{'; echo '"message": "Unable to create product."'; echo '}'; } ?>
更新08-12-2018
运行createproduct()会将其发布到create.PHP中
我用谷歌浏览器的检查员网络选项卡检查了它.
{name: "test",email: "test",phone: "test",amount: "test",description: "test",pickup: "test",…} amount : "test" back : "test" description : "test" email : "test" name : "test" phone : "test" pickup : "test"
它还返回代码:200
根据这个link的意思是:
200好的
此响应代码表示请求成功.
201创建
这表示请求成功并创建了资源.它用于确认PUT或POST请求的成功.
它似乎没有创建新资源,也没有发布任何内容.
显示的错误可能来自这种方法,因为PHP://输入可以是任何东西,所以$data可以.如果是这种情况,您尝试从实际上不是对象的对象中分配值($reservation-> name = $data-> name;).
// get posted data $data = json_decode(file_get_contents("PHP://input")); // set product property values $reservation->name = $data->name; $reservation->eMail = $data->eMail; $reservation->phoneNumber = $data->phoneNumber; $reservation->colorScooter = $data->colorScooter; $reservation->amountScooters = $data->amountScooters; $reservation->inputDate = $data->inputDate; $reservation->returnDate = $data->returnDate; $reservation->category_id = $data->category_id; $reservation->created = date('Y-m-d H:i:s');
阐明$data的数据类型,并确保无论如何都保持不变. (尝试使用var_dump而不是echo或print_r,授予其他信息)