在 PHP 中使用多个过滤器创建 REST API GET 方法
P粉937769356
P粉937769356 2024-01-29 13:03:56
[PHP讨论组]

我使用参数 id 在 php 中创建了一个 REST API GET 方法。 http://localhost:8012/REST-API/items/expenses?id=2。这工作正常,但我想使用 http://localhost:8012/REST-API/items/expenses?id=2&year=2022 获取数据。我是 php 新手,尝试了所有可能性,但没有得到正确的响应。下面是代码

/class 文件内的 Expenses.php

conn = $db;
    }   

    function expenses(){    
        if($this->year) {
            $stmt = $this->conn->prepare("SELECT * FROM ".$this->expensesTable." WHERE year = ?");
            $stmt->bind_param("i", $this->year);                    
        } 
        else if($this->id) {
            $stmt = $this->conn->prepare("SELECT * FROM ".$this->expensesTable." WHERE id = ?");
            $stmt->bind_param("i", $this->id);                  
        }
        else if($this->id && $this->year) {
            $stmt = $this->conn->prepare("SELECT * FROM ".$this->expensesTable." WHERE id = ? AND year= ?");
            $stmt->bind_param("i", $this->id,$this->year);                  
        }

        else {
            $stmt = $this->conn->prepare("SELECT * FROM ".$this->expensesTable);        
        }       
        $stmt->execute();           
        $result = $stmt->get_result();      
        return $result; 
    }
}
?>

readexpenses.php

getConnection();
 
$expenses = new Expenses($db);

$expenses->id = (isset($_GET['id']) && $_GET['id']) ? $_GET['id'] : '0';
$expenses->year = (isset($_GET['year']) && $_GET['year']) ? $_GET['year'] : '0';
$expenses->extra = (isset($_GET['month']) && $_GET['month']) ? $_GET['month'] : '0';

$result = $expenses->expenses();

if($result->num_rows > 0){    
    $itemRecords=array();
    $itemRecords["expenses"]=array(); 
    while ($expense = $result->fetch_assoc()) {     
        extract($expense); 
        $itemDetails=array(
            "id" => $id,
            "month" => $month,
            "amount" => $amount,
            "year" => $year
        ); 
       array_push($itemRecords["expenses"], $itemDetails);
    }    
    http_response_code(200);     
    echo json_encode($itemRecords);
}else{     
    http_response_code(404);     
    echo json_encode(
        array("message" => "No item found.")
    );
}

.htaccess

RewriteEngine On    # Turn on the rewriting engine
RewriteRule ^read$ read.php [NC,L]
RewriteRule ^read/([0-9_-]*)$ read.php?id=$1 [NC,L]
RewriteRule ^create$ create.php [NC,L]
RewriteRule ^update$ update.php [NC,L]
RewriteRule ^delete$ delete.php [NC,L]
RewriteRule ^expenses$ readexpenses.php [NC,L]
RewriteRule ^expenses/([0-9_-]*)$ readexpenses.php?year=$1 [NC,L]
RewriteRule ^expenses/([0-9_-]*)$ readexpenses.php?id=$1 [NC,L]
RewriteRule ^expenses/([0-9_-]*)$ readexpenses.php?id=$1&year=$2 [NC,L]

P粉937769356
P粉937769356

全部回复(0)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号