将参数从 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();
}
}
我有一个用 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().
并且在我的 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();
}
}