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

news2024/10/6 3:00:38

🏆本文收录于「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.coloradmin.cn/o/1788919.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

0X JavaSE-- 集合框架【Collection(List、Set、Queue)、Map】

每一个集合类底层采用的数据结构不同&#xff0c;例如ArrayList集合底层采用了数组&#xff0c;LinkedList集合底层采用了双向链表&#xff0c;HashMap集合底层采用了哈希表&#xff0c;TreeMap集合底层采用了红黑树。**集合中存储的是引用。**即。集合中存放的是对象的地址&am…

【学习】DCMM认证提升企业竞争优势的表现

DCMM认证是企业提升数据管理能力的重要途径。它不仅可以帮助企业评估自身的数据管理水平&#xff0c;还可以为企业提供改进的方向和目标。在数字化时代&#xff0c;拥有强大的数据管理能力是企业成功的关键。因此&#xff0c;通过DCMM认证&#xff0c;企业可以更好地适应数字化…

【iOS】UI——关于UIAlertController类

目录 前言关于UIAlertController具体操作及代码实现总结 前言 在UI学习中&#xff0c;我们发现UIAlertView在iOS 9中已经被废弃&#xff0c;我们找到UIAlertController来代替UIAlertView实现弹出框的功能&#xff0c;从而有了这篇关于UIAlertController的学习笔记。 关于UIAle…

基于websocket与node搭建简易聊天室

一、前言 上一篇文章介绍了websocket的详细用法与工具类的封装&#xff0c;本篇就基于websocket搭建一个简易实时的聊天室。 在本篇开始之前也可以去回顾一下websocket详细用法&#xff1a;WebSocket详解与封装工具类 二、基于node搭建后台websocket服务 首先确认本机电脑中…

手机录屏怎么没有声音?一键排查,轻松解决!

“手机录屏怎么没有声音&#xff1f;今天录制了一个线上的音乐会&#xff0c;结束的时候发现完全没有声音&#xff0c;我检查了手机的设置&#xff0c;录屏功能看起来是正常的&#xff0c;但为什么就是录不到声音呢&#xff1f;希望大家能帮我解答这个疑惑。” 随着智能手机的…

linux上VirtualBox使用

前言 最近想把唯一的windows系统装成linux&#xff0c; 但是确实存在一些特殊软件无法舍弃&#xff0c;所有装完linux需要用虚拟机装个windows 上来使用特定的一些软件&#xff08;不想用wine了&#xff09;。 还有对一些特定usb设备的透传&#xff0c;这样才能保证在虚拟机中…

数据库开发-Mysql03

目录 1. 多表查询 1.1 概述 1.1.1 数据准备 1.1.2 介绍 1.1.3 分类 1.2 内连接 1.3 外连接 1.4 子查询 1.4.1 介绍 1.4.2 标量子查询 1.4.3 列子查询 1.4.4 行子查询 1.4.5 表子查询 1.5 案例 2. 事务 2.1 介绍 2.2 操作 2.3 四大特性 3. 索引 3.1 介绍 3…

雷士大路灯有必要买吗?雷士、书客、孩视宝护眼落地灯实测PK!

面对市面上众多的护眼大路灯品牌&#xff0c;其中雷士、书客和孩视宝这几款大路灯受到了广泛的青睐&#xff0c;也是热度比较高的几款产品&#xff0c;正是因为这么多款大路灯&#xff0c;很多伙伴在看到文章推荐后很纠结&#xff0c;不知道如何选择&#xff0c;也有一部分伙伴…

【猫狗识别系统】图像识别Python+TensorFlow+卷积神经网络算法+人工智能深度学习

猫狗识别系统。通过TensorFlow搭建MobileNetV2轻量级卷积神经算法网络模型&#xff0c;通过对猫狗的图片数据集进行训练&#xff0c;得到一个进度较高的H5格式的模型文件。然后使用Django框架搭建了一个Web网页端可视化操作界面。实现用户上传一张图片识别其名称。 一、前言 …

RK3568技术笔记之一 RK3568总体介绍

RK3568是瑞芯微开发出一款很好用的芯片。我先把ROCKCHIP的原厂信息搬过来看看。 首先声明一下&#xff0c;这篇文章里的资讯版权归瑞芯微电子股份有限公司。毕竟是我转过来的嘛。 我自己的心得&#xff0c;版权就归我啦。 搬砖地址Rockchip-瑞芯微电子股份有限公司瑞芯微专注…

day34--Spring(三)

一、AOP 1 AOP简介 问题导入 问题1&#xff1a;AOP的作用是什么&#xff1f; 问题2&#xff1a;连接点和切入点有什么区别&#xff0c;二者谁的范围大&#xff1f; 问题3&#xff1a;请描述什么是切面&#xff1f; 1.1 AOP简介和作用【理解】 AOP(Aspect Oriented Progr…

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

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

合并多个h5文件

如图&#xff0c;bbt_frames下有多个视频文件夹&#xff0c;每个文件夹包括多个h5文件&#xff0c;将每个文件夹的h5文件合并成一个h5文件&#xff0c;并以该文件夹命名&#xff0c;存储至video_feature文件夹。 import os import h5py import numpy as npdef merge_h5_files(…

《深入浅出存储引擎》不同数据库背后的数据存储方案

在大数据和AI时代&#xff0c;数据库成为各类应用不可或缺的重要组成部分。而数据库中的数据依赖存储引擎进行管理&#xff0c;包括数据的存储、查询、更新和删除等。因此&#xff0c;在设计系统时&#xff0c;选择正确的数据库存储引擎方案变得尤为重要。这篇文章将以关系型、…

4.5-24V48V60V72V80V降压12V 0.5A 电动车车充USB充电方案芯片IC-H6601

H6601 降压开关转换器是一款为电动车USB充电设计的芯片。这款芯片内置功率MOSFET&#xff0c;具备宽输入工作电压范围&#xff08;4.5V 至 60V&#xff09;&#xff0c;能够持续输出电流0.5A&#xff0c;并且具有良好的负载和线性调整率。 电流控制模式使环路易稳定&#xff0c…

测试工具fio

一、安装部署 fio是一款优秀的磁盘IO测试工具&#xff0c;在Linux中比较常用于测试磁盘IO 其下载地址&#xff1a;https://brick.kernel.dk/snaps/fio-2.1.10.tar.gz 或者登录其官网&#xff1a;http://freshmeat.sourceforge.net/projects/fio/ 进行下载。 tar -zxvf fio-…

SpringBoot整合Skywalking

下载Java Agent 官网&#xff1a;https://skywalking.apache.org/downloads/ 提示&#xff1a;Agent最好到网上找一找之前的版本&#xff0c;新版本可能有bug&#xff0c;如果出现了并且网上也几乎没有这个版本的解决方法那么就切换之前的版本 本地启动时 -javaagent:d:\opt\…

ABB码垛机器人IRB260通讯板维修

ABB码垛机器人在现代制造业中发挥着重要作用&#xff0c;而机器人通讯板维修对于确保机器人的正常运行至关重要。 通讯板是ABB码垛机器人与控制系统之间进行数据传输的桥梁。它负责接收控制系统的指令&#xff0c;并将机器人的运行数据反馈给控制系统。如果通讯板出现故障&…

郑州永兴牌饲料机械设备厂家

作为专注生产饲料机械设备厂家&#xff0c;郑州永兴不仅拥有完善的生产线和制造工艺&#xff0c;更在技术创新和产品研发方面走在了行业前列。 郑州永兴深知饲料机械设备对于饲料生产的重要性&#xff0c;因此始终坚持以市场需求为导向&#xff0c;不断推陈出新。其生产的饲…

黄金票据~

一. 黄金票据原理 黄金票据一般是伪造的TGT,生成这个TGT&#xff0c;不需要和KDC进行校验&#xff0c;金票可以在本地直接生成&#xff0c;生成的的金票在非域机器和域内机器都可以使用 黄金票据的作用&#xff1a; 可以用来权限维持 可以用来横向移动二. 利用条件 1. 必须…