将参数从 URL 传递到 api php 中的 php 函数

Pass parameter from URL to a php function in an api php

我有一个用 PHP 编写的工作 API,我的代码工作正常,但我需要将参数传递给 API。但它没有按预期工作。 在我的 readOrders 函数中,我正在获取所有订单,但现在我想获取所有 ID 高于从 url 访问 api.

传递的特定数字的订单
 function getOrders($last_oid){
 $stmt = $this->con->prepare("SELECT oid, uid, order_num, create_date, status_date FROM orders WHERE oid > ?");
 $stmt->execute($last_oid);
 $stmt->bind_result($oid, $uid, $order_num, $create_date, $status_date);
 
 $orders = array(); 
 
 while($stmt->fetch()){
 $order  = array();
 $order['oid'] = $oid; 
 $order['uid'] = $uid; 
 $order['order_num'] = $order_num; 
 $order['create_date'] = $create_date; 
 $order['status_date'] = $status_date; 
 
 array_push($orders, $order); 
 }
 
 return $orders; 
 }

当我没有参数 $last_oid 时,我得到了所有订单。该参数用于获取 ID 为 WHERE id>? 的订单,并在 execute().

中传递 last_id

并且在我的 API 调用中,我正在传递 last_id,它目前是硬编码的,完成后我将使用 $_GET 获取值并传递它到函数。

 //the READ operation
 //if the call is get orders
 case 'getOrders':
 $db = new DbOperation();
 $response['error'] = false; 
 $response['message'] = 'Request orders successfully completed';
 $response['orders'] = $db->getOrders(504);
 break; 

我不确定我做错了什么。我得到一个空 json 但我应该得到几行。

您的代码有误。您正在执行“准备好的语句”,但语句错误。像这样尝试:

function getOrders($last_oid)
{
   try {
      $orders = array();
      $stmt = $this->con->prepare("SELECT oid, uid, order_num, create_date, status_date FROM orders WHERE oid > ?");
      // I assume $ last_oid is an integer.
      $stmt->bind_param("i", $last_oid);
      if ($stmt->execute()) {
         $result = $stmt->get_result();

         // use the while loop to load the result set
         while ($row = $result->fetch_assoc()) {
            array_push($orders, array(
               'oid' => $row['oid'],
               'uid' => $row['uid'],
               'order_num' => $row['order_num'],
               'create_date' => $row['create_date'],
               'status_date' => $row['status_date']
            ));  
         } 
         return $orders;
      } 

   } catch (Exception $ex) {
      print $ex->getMessage();
   }
}