关于URL获取的参数,无法执行二选一查询

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

问题描述

以下是我的代码,从上一个页面中点击超链接获取了数据库中的链接信息,转到本页面,从而得到了URL参数 n a m e ,然后我需要在本页面执行查询功能,查询方式是 2 选一,如下代码所示,同时,还要能够事先筛选出含有 name,然后我需要在本页面执行查询功能,查询方式是2选一,如下代码所示,同时,还要能够事先筛选出含有 name,然后我需要在本页面执行查询功能,查询方式是2选一,如下代码所示,同时,还要能够事先筛选出含有name参数数据的m_name字段对应的数据;可是,在执行查询的时候,$name参数始终是处于空值状态,请各位帮我修改一下代码!谢谢!

<?php 
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
require_once './connections/games.php';
// 从 URL 中获取 name 参数
$name = isset($_GET['name']) ? $_GET['name'] : '';
?>
 
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link href="./css/styles.css" rel="stylesheet" type="text/css">
 
<title>成绩查询 | Search</title>
</head>
<body>
    <div><a style="font-weight: bolder;font-size: 20px;">成绩查询 | Search</a><a style="color:yellow">【本结果仅供参考,所有成绩以现场播报和张贴公示为准!】</a></div>
    <div class="sl">
    <form id="sh-form" method="post" action="sh.php">
        <label style="font-size: 16px;font-weight:bold;font-color:#FFF;">查询方式:</label>
        <select style="height:26px" name="searchType" id="searchType">
            <option value="bib">编号</option>
            <option value="name">姓名</option>
        </select>
        <input style="height:20px; border-radius: 3px; border: 1px solid #2b7acd;" type="text" id="searchInput" name="searchInput" placeholder="请输入" required>
        <button type="searchButton" id="searchButton">查询</button>
    </form>
    </div>
    <br>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script>
        $(document).ready(function() {
            $('#searchButton').click(function(event) {
                event.preventDefault(); // 阻止表单的默认提交行为
                // 获取用户输入
                var searchType = $('#searchType').val();
                var searchInput = $('#searchInput').val();
                // 验证查询类型
                if (!searchType || !searchInput) {
                    alert('请填写正确的查询方式及对应的信息!');
                    return;
                }
                // 发送Ajax请求到服务器
                $.ajax({
                    url: 'sh.php',
                    type: 'POST',
                    data: {
                        searchType: searchType,
                        searchInput: searchInput
                    },
                    success: function(response) {
                        // 在成功回调中处理服务器返回的数据
                        $('#main-content').html(response); 
                    },
                    error: function(xhr, status, error) {
                        // 处理错误情况
                        alert('查询失败: ' + error);
                    }
                });
            });
        });
    </script>
<?php
    // 处理表单提交
    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        // 获取用户输入
        $searchType = $_POST['searchType'];
        $searchInput = $_POST['searchInput'];
 
        // 初始化SQL语句,不带WHERE子句
    $sql = "SELECT * FROM m_result";
 
 
    // 根据查询类型构建SQL语句
    $params = []; // 用于存储绑定参数的数组
    if ($searchType === 'bib') { // 编号查询
        $sql .= " WHERE bib = :searchInput";
        $params[':searchInput'] = $searchInput;
    } elseif ($searchType === 'name') { // 姓名查询
        $sql .= " WHERE `name` = :searchInput";
        $params[':searchInput'] = $searchInput;
    }
 
    $name = isset($_GET['name']) ? $_GET['name'] : '';
    echo "组别".$name;// 这里无法获取到$name参数,所以查询不到数据
 
    // 如果$name变量存在且不为空,则添加额外的筛选条件
    if (!empty($name)) {
        $sql .= " AND `m_name` = :name";
        $params[':name'] = $name;
    }
 
    // 如果没有任何查询条件,则不执行查询
    if (empty($params)) {
        echo "查询无效,请提供有效的查询条件!";
        exit;
    }
 
    // 准备SQL语句
    $stmt = $pdo->prepare($sql);
 
    // 绑定参数并执行查询
    foreach ($params as $param => $value) {
        $stmt->bindParam($param, $value);
    }
 
        try {
            $stmt->execute();
            $results = $stmt->fetchAll(PDO::FETCH_ASSOC);
 
            // 显示查询结果
            if (!empty($results)) {
        ?>
            <div>
            <table>
            <tr align="center" style="background:#FFF;font-weight: bold;">
                <th>排名<br>Rank</th>
                <th>编号<br>Bib</th>
                <th>姓名<br>Name</th>
            </tr >
                <?php foreach ($results as $row) { ?>
                <tr>
                <td><?php echo $row['rank'];?></td>
                <td><?php echo $row['bib'];?></td>
                <td><?php echo $row['name'];?></td>
                </tr>
                <?php
                }
                ?>
                </table>
                <?php
            } else {
                echo "没有找到匹配的结果!";
            }
        } catch (\PDOException $e) {
            die("查询错误: " . $e->getMessage());
        }
    }
    ?>
</body>
</html>

如上问题有来自我自身项目开发,有的收集网站,有的来自读者,如有侵权,立马删除。

解决方案

  如下是上述问题的解决方案,仅供参考:

您的代码中存在几个问题,导致无法正确获取和使用URL参数$name。以下是修改后的代码和解释:

  1. 您在HTML表单中没有包含用于提交$name参数的输入字段。因此,当表单提交时,$name参数不会被发送到服务器。

  2. 您在$_SERVER['REQUEST_METHOD'] === 'POST'条件判断块之外已经初始化了$name变量,但在表单提交后再次初始化了相同的变量,这将覆盖之前从GET请求中获取的值。

  3. 为了解决这些问题,我们需要在HTML表单中添加一个隐藏的输入字段来发送$name参数,并确保在表单提交后不要重新初始化$name变量。

以下是修改后的代码:

<?php 
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
require_once './connections/games.php';

// 从 URL 中获取 name 参数
$name = isset($_GET['name']) ? $_GET['name'] : '';

// 处理表单提交
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // 获取用户输入
    $searchType = $_POST['searchType'];
    $searchInput = $_POST['searchInput'];

    // 此处不再重新初始化$name变量,因为它已经在文件开头初始化
    // $name = isset($_GET['name']) ? $_GET['name'] : '';

    // ... 省略其他代码 ...

    // 显示查询结果
    // ... 省略其他代码 ...
}

// 显示HTML和JavaScript代码
// ... 省略其他代码 ...
?>

<!--HTML表单中添加一个隐藏的输入字段来发送$name参数 -->
<form id="sh-form" method="post" action="sh.php">
    <input type="hidden" name="name" value="<?php echo htmlspecialchars($name); ?>">
    <!-- 其他表单字段 -->
</form>

这样,当用户从上一个页面点击带有name参数的链接时,$name参数将被获取并显示在页面上。当用户提交表单时,$name参数也会作为隐藏字段被发送,这样您就可以在sh.php页面中使用它进行查询。

请确保在sh.php页面的其他部分正确处理和显示$name参数。

  希望能够帮到有需要的你。

  PS:如若遇到采纳如下方案还是未解决的同学,希望不要抱怨&&急躁,毕竟影响因素众多,我写出来也是希望能够尽最大努力帮助到同类似问题的小伙伴,即把你未解决或者产生新Bug黏贴在评论区,我们大家一起来努力,一起帮你看看,可以不咯。

  若有对当前Bug有与如下提供的方法不一致,有个不情之请,希望你能把你的新思路或新方法分享到评论区,一起学习,目的就是帮助更多所需要的同学,正所谓「赠人玫瑰,手留余香」。

☀️写在最后

  ok,以上就是我这期的Bug修复内容啦,如果还想查找更多解决方案,你可以看看我专门收集Bug及提供解决方案的专栏「Bug调优」,都是实战中碰到的Bug,希望对你有所帮助。到此,咱们下期拜拜。

码字不易,如果这篇文章对你有所帮助,帮忙给bugj菌来个一键三连(关注、点赞、收藏) ,您的支持就是我坚持写作分享知识点传播技术的最大动力。

同时也推荐大家关注我的硬核公众号:「猿圈奇妙屋」 ;以第一手学习bug菌的首发干货,不仅能学习更多技术硬货,还可白嫖最新BAT大厂面试真题、4000G Pdf技术书籍、万份简历/PPT模板、技术文章Markdown文档等海量资料,你想要的我都有!

📣关于我

我是bug菌,CSDN | 掘金 | InfoQ | 51CTO | 华为云 | 阿里云 | 腾讯云 等社区博客专家,C站博客之星Top30,华为云2023年度十佳博主,掘金多年度人气作者Top40,51CTO年度博主Top12,掘金/InfoQ/51CTO等社区优质创作者;全网粉丝合计 20w+;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试真题、4000G PDF电子书籍、简历模板等海量资料,你想要的我都有,关键是你不来拿。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/679743.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Arthas调优工具使用

1&#xff0c;服务器端下载 curl -O https://arthas.aliyun.com/arthas-boot.jar 2&#xff0c;服务器端启动 java -jar arthas-boot.jar 选定要绑定的Java进程ID 3&#xff0c;本地idea安装Arthas idea 4&#xff0c;选定方法右键trace,生成命令 trace com.xxx.xxx.xxx.vouche…

C++之noexcept

目录 1.概述 2.noexcept作为说明符 3.noexcept作为运算符 4.传统throw与noexcept比较 5.原理剖析 6.总结 1.概述 在C中&#xff0c;noexcept是一个关键字&#xff0c;用于指定函数不会抛出异常。如果函数保证不会抛出异常&#xff0c;编译器可以进行更多优化&#xff0c;…

Spring Boot既打jar包又打war包如何做

你好&#xff0c;我是柳岸花开。 引言 在软件开发中&#xff0c;根据不同的部署需求&#xff0c;我们可能需要将应用打包成不同的格式。Spring Boot作为目前流行的Java应用开发框架&#xff0c;提供了一种简单的方式来打包应用。本文将介绍如何利用Maven Profiles在Spring Boot…

JDK8安装详细教程教程-windows

&#x1f4d6;JDK8安装详细教程教程-windows ✅1. 下载✅2. 安装 ✅1. 下载 123云盘下载地址&#xff1a; JDK8 | JDK11 | JDK17 官方Oracle地址&#xff1a;https://www.oracle.com/java/technologies/downloads/archive/ ✅2. 安装 运行jdk-8u211-windows-x64.exe安装包文…

Blog项目切换Markdown编辑器———LayUI弹出层弹出写在页面的内容导致的各种bug

【2024.5.24回顾】 1 问题描述(描述完自己解决了…) 正常情况 点击添加文章按钮后&#xff0c;弹出文章编辑界面&#xff0c;如果用富文本功能编辑&#xff0c;则一切正常。可以多次打开、关闭 Markdown 如果在弹出层中点击了切换编辑器按钮&#xff0c;会成功切换为markd…

FreeRTOS的使用与编码器设计

第一步&#xff1a;任务创建&#xff1a;在 FreeRTOS 中&#xff0c;系统功能由任务&#xff08;Task&#xff09;组成。在系统启动时&#xff0c;你需要创建各个任务并指定它们的任务频率、优先级、堆栈大小等参数。 xTaskCreate() 来创建开始任务并定义任务的执行函数、优先级…

Java之instanceof 运算符:掌握它的使用方法

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

人工智能--深度神经网络

目录 &#x1f349;引言 &#x1f349;深度神经网络的基本概念 &#x1f348;神经网络的起源 &#x1f34d; 神经网络的基本结构 &#x1f349;深度神经网络的结构 &#x1f348; 卷积神经网络&#xff08;CNN&#xff09; &#x1f348;循环神经网络&#xff08;RNN&…

期权懂基础知识分享:场外期权怎么做?

今天带你了解期权懂基础知识分享&#xff1a;场外期权怎么做&#xff1f;场外个股期权是一种金融工具&#xff0c;用于在股票市场之外交易。 场外期权怎么做&#xff1f; 签订框架协议&#xff1a;个人需要与机构签订场外期权框架协议&#xff0c;通常无需单独开立账户。 询价…

Web3.0区块链技术开发方案丨中心化与去中心化交易所开发

随着区块链技术的不断发展和普及&#xff0c;加密货币交易所成为数字资产市场中的关键组成部分。其中&#xff0c;中心化交易所&#xff08;CEX&#xff09;和去中心化交易所&#xff08;DEX&#xff09;是两种主要的交易所类型。本文将探讨Web3.0区块链技术开发方案&#xff0…

【Postman接口测试】第四节.Postman接口测试项目实战(中)

文章目录 前言五、Postman断言 5.1 Postman断言介绍 5.2 响应状态码断言 5.3 包含指定字符串断言 5.4 JSON数据断言六、参数化 5.1 Postman参数化介绍 5.2 Postman参数化实现 5.3 针对项目登录接口参数化实现 总结 前言 五、Postman断言 5.1 Postman断言介…

Android 应用权限

文章目录 权限声明uses-permissionpermissionpermission-grouppermission-tree其他uses-feature 权限配置 权限声明 Android权限在AndroidManifest.xml中声明&#xff0c;<permission>、 <permission-group> 、<permission-tree> 和<uses-permission>…

TSINGSEE青犀视频汇聚机房动环智能监控方案,提升机房安全稳定性

一、背景需求 在当今信息化时代&#xff0c;机房作为数据中心的核心设施&#xff0c;承载着重要的网络设备和数据存储设备&#xff0c;其正常运行对于企业的数据安全和业务连续性至关重要。机房内部设备众多&#xff0c;且运行过程中涉及大量的数据交换和传输。一旦发生安全事…

[C][数据结构][时间空间复杂度]详细讲解

目录 0.铺垫1.时间复杂度 -- 衡量算法的运行快慢1.是什么&#xff1f;2.大O的渐进表示法 2.空间复杂度 - 衡量算法所需要的额外空间3.常见复杂度对比 0.铺垫 时间是累计的空间是不累计的&#xff0c;可以重复利用 1.时间复杂度 – 衡量算法的运行快慢 1.是什么&#xff1f; …

量化研究---大qmt实盘实现禄得可转债策略轮动

前面写了一个强大的可转债自定义系统&#xff0c;我们可以利用这个快速对接到大qmt,我提供实时数据支持 量化研究---强大的可转债分析系统上线&#xff0c;提供api&#xff0c;实时数据支持 打开网页 http://120.78.132.143:8023/ 强大可转债选择系统 http://120.78.132.143:8…

【TB作品】msp430g2553单片机,DS18B20,温控装置,iic OLED

功能 /* 硬件&#xff1a;DS18B20OLEDIIC绿灯红灯一个按键蜂鸣器加热片功能&#xff1a;1 显示温度2 显示临界值&#xff0c;按键可以加减临界值&#xff0c;临界值在20~35之间可调。3 实际温度高于&#xff08;临界值1&#xff09;后绿灯亮表示降温。4 实际温度低于&#xf…

【云原生_K8S系列】什么是 Kubernetes Pod?用实际例子解释

Kubernetes&#xff08;简称K8S&#xff09;是一个开源的容器编排平台&#xff0c;用于自动化容器化应用的部署、扩展和管理。在Kubernetes中&#xff0c;Pod是最小的部署单元。理解Pod的概念对于掌握Kubernetes至关重要。本篇文章将详细解释什么是Kubernetes Pod&#xff0c;并…

【机器学习】LoRA:大语言模型中低秩自适应分析

LoRA&#xff1a;大型语言模型中的低秩自适应调优策略 一、LoRA的原理与优势二、LoRA在编程和数学任务中的性能表现四、总结与展望 随着人工智能技术的飞速发展&#xff0c;大型语言模型已成为自然语言处理领域的明星技术。然而&#xff0c;这些模型通常拥有数以亿计的参数&…

vivado BD_PIN、BD_PORT

BD_PIN 描述 块设计引脚或bd_pin对象是块设计上的逻辑连接点 单间牢房块设计引脚允许抽象单元的内部逻辑&#xff0c;并且 简化以便于使用。引脚可以是标量引脚或总线引脚&#xff0c;并且可以出现在层次结构上 块设计单元或叶级单元。 相关对象 如图所示&#xff0c;块设计引脚…

Mac保姆级配置jdk环境

1.找到下载的jdk环境 通常是这个。留作备用 /Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home/bin 然后新开一个终端下执行以下命令 sudo vim ~/.bash_profile 进入编辑模式后 按 i 开始添加内容结束编辑模式按 ESC结束后保存输入 :wq!不保存输入 :q! 注意…