You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Grocery Crud自定义视图:如何通过URL识别查询ID?

嘿,别慌!作为编程和Grocery CRUD的新手,遇到这种URL里取ID的问题太正常了,我给你两个超简单的方法,保证一看就会~

方法1:用PHP自带的$_SERVER['PATH_INFO']直接拿ID

你的URL是.../scripts/pastMenuPrint.php/2,这里面/2属于PHP的PATH_INFO内容,直接就能拿到:

// 先检查有没有PATH_INFO内容
if (!empty($_SERVER['PATH_INFO'])) {
    // 去掉开头的斜杠,得到纯ID
    $menu_id = trim($_SERVER['PATH_INFO'], '/');
    
    // 新手必做:验证ID是数字,防止恶意输入
    if (is_numeric($menu_id)) {
        // 现在就可以用这个$menu_id去查数据库啦!
        // 比如查历史菜单:SELECT * FROM past_menus WHERE id = $menu_id
    } else {
        echo "无效的菜单ID哦";
    }
} else {
    echo "请提供要查询的菜单ID";
}
方法2:从完整URL里拆分ID(兼容更多服务器配置)

如果第一种方法不好使(比如服务器没开启PATH_INFO),就从完整请求路径里拆:

// 获取完整的请求路径,比如"/scripts/pastMenuPrint.php/2"
$request_uri = $_SERVER['REQUEST_URI'];
// 用斜杠把路径拆成数组
$path_parts = explode('/', $request_uri);
// 取数组最后一个元素,就是我们要的ID
$menu_id = end($path_parts);

// 同样要验证是数字!
if (is_numeric($menu_id)) {
    // 执行你的查询逻辑
} else {
    echo "请输入有效的数字ID";
}
额外小提醒:在Grocery CRUD里正确传ID

你用add_action跳转的时候,要确保把当前行的ID拼到URL里,Grocery CRUD支持用{id}自动替换成当前行的ID,比如:

// 原来的代码可能是这样
// $crud->add_action('打印历史菜单', '', 'scripts/pastMenuPrint.php', 'fa fa-print');

// 改成带{id}的URL,点击按钮时会自动替换成对应行的ID
$crud->add_action('打印历史菜单', '', 'scripts/pastMenuPrint.php/{id}', 'fa fa-print');

重中之重:新手一定要注意SQL注入风险!不要直接把$menu_id拼到SQL语句里,最好用预处理语句,比如用mysqli的写法:

// 假设你已经连接了数据库,$conn是连接对象
$stmt = $conn->prepare("SELECT * FROM past_menus WHERE id = ?");
$stmt->bind_param("i", $menu_id); // "i"表示这个参数是整数
$stmt->execute();
$result = $stmt->get_result();
$menu_data = $result->fetch_assoc(); // 拿到ID对应的菜单数据

内容的提问来源于stack exchange,提问作者Dontknowanything879

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:58:40