药品说明书查询软件网页PHP版本

使用的是大佬YMXuan的数据库
可以自己架设到本地,或者用免费的服务器跑也行,比如sevr00这类的,
PHP版本7.0以上即可。兼容手机端显示查询。
使用方法:将数据库文件drugs.db 和PHP文件放在同一目录即可。

我用作者原版数据库文件 可能后续他修改了,导致部分人提示
“数据库查询失败:“SQLSTATEIHY000] General error: 1 no such column: 批准文号”

作者原版数据库文件网盘链接: https://pan.baidu.com/s/1FRh7MK1FtlJaF39T-EP0vw?pwd=hii2 提取码: hii2
药品说明书查询软件网页PHP版本

  1. <?php
  2. /**
  3. * 药品数据库查询系统 – 智能组合搜索版
  4. * 使用说明:
  5. * 1. 将此文件保存为 index.php
  6. * 2. 将 drugs.db 放在同一目录
  7. * 3. 支持空格分隔多关键词组合搜索
  8. */
  9. // 数据库配置
  10. define(‘DB_PATH’, __DIR__ . ‘/drugs.db’);
  11. // 错误处理
  12. error_reporting(E_ALL);
  13. ini_set(‘display_errors’, 0);
  14. // 处理查询请求
  15. $results = [];
  16. $error = ”;
  17. $query_info = ”;
  18. $search_term = ”;
  19. $search_type = ‘smart’;
  20. if ($_SERVER[‘REQUEST_METHOD’] === ‘POST’) {
  21.     $search_term = trim($_POST[‘search_term’] ?? ”);
  22.     $search_type = $_POST[‘search_type’] ?? ‘smart’;
  23.     if (!empty($search_term)) {
  24.         try {
  25.             $pdo = new PDO(‘sqlite:’ . DB_PATH);
  26.             $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  27.             $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
  28.             // 智能搜索:支持空格分隔的多关键词组合
  29.             $keywords = array_filter(explode(‘ ‘, $search_term));
  30.             if ($search_type === ‘smart’ && count($keywords) > 1) {
  31.                 // 多关键词组合搜索:所有关键词都必须在某个字段中出现
  32.                 $conditions = [];
  33.                 $params = [];
  34.                 foreach ($keywords as $idx => $keyword) {
  35.                     $param_name = “keyword{$idx}”;
  36.                     $conditions[] = “(通用名称 LIKE :{$param_name} OR
  37.                                      商品名称 LIKE :{$param_name} OR
  38.                                      生产企业 LIKE :{$param_name} OR
  39.                                      批准文号 LIKE :{$param_name} OR
  40.                                      相关疾病 LIKE :{$param_name} OR
  41.                                      适应症 LIKE :{$param_name})”;
  42.                     $params[$param_name] = “%{$keyword}%”;
  43.                 }
  44.                 $sql = “SELECT * FROM drug_info WHERE ” . implode(‘ AND ‘, $conditions);
  45.                 $sql .= ” ORDER BY 通用名称, 生产企业 LIMIT 100″;
  46.                 $query_info = “智能组合搜索(” . count($keywords) . ” 个关键词):”” . $search_term . “””;
  47.             } else {
  48.                 // 单关键词或指定字段搜索
  49.                 $keyword = $keywords[0];
  50.                 switch ($search_type) {
  51.                     case ‘generic_name’:
  52.                         $sql = “SELECT * FROM drug_info WHERE 通用名称 LIKE :term ORDER BY 通用名称, 生产企业”;
  53.                         $query_info = “通用名称”;
  54.                         break;
  55.                     case ‘trade_name’:
  56.                         $sql = “SELECT * FROM drug_info WHERE 商品名称 LIKE :term ORDER BY 商品名称, 生产企业”;
  57.                         $query_info = “商品名称”;
  58.                         break;
  59.                     case ‘manufacturer’:
  60.                         $sql = “SELECT * FROM drug_info WHERE 生产企业 LIKE :term ORDER BY 生产企业, 通用名称”;
  61.                         $query_info = “生产企业”;
  62.                         break;
  63.                     case ‘approval_number’:
  64.                         $sql = “SELECT * FROM drug_info WHERE 批准文号 LIKE :term ORDER BY 批准文号”;
  65.                         $query_info = “批准文号”;
  66.                         break;
  67.                     default:
  68.                         // 智能模式单关键词:搜索所有主要字段
  69.                         $sql = “SELECT * FROM drug_info WHERE
  70.                                 通用名称 LIKE :term OR
  71.                                 商品名称 LIKE :term OR
  72.                                 生产企业 LIKE :term OR
  73.                                 批准文号 LIKE :term OR
  74.                                 相关疾病 LIKE :term OR
  75.                                 适应症 LIKE :term
  76.                                 ORDER BY 通用名称, 生产企业”;
  77.                         $query_info = “智能搜索”;
  78.                 }
  79.                 $sql .= ” LIMIT 100″;
  80.                 $params = [‘term’ => “%{$keyword}%”];
  81.                 $query_info .= ” 包含 “{$keyword}””;
  82.             }
  83.             $stmt = $pdo->prepare($sql);
  84.             $stmt->execute($params);
  85.             $results = $stmt->fetchAll();
  86.             $query_info .= ” 的药品,共找到 ” . count($results) . ” 条结果”;
  87.         } catch (PDOException $e) {
  88.             $error = “数据库查询失败: ” . $e->getMessage();
  89.         }
  90.     } else {
  91.         $error = “请输入查询关键词”;
  92.     }
  93. }
  94. // 获取数据库统计信息
  95. $db_stats = ”;
  96. try {
  97.     $pdo = new PDO(‘sqlite:’ . DB_PATH);
  98.     $stmt = $pdo->query(“SELECT COUNT(*) as total FROM drug_info”);
  99.     $total = $stmt->fetch()[‘total’];
  100.     $db_stats = “数据库共收录 {$total} 条药品信息”;
  101. } catch (PDOException $e) {
  102.     $db_stats = “无法连接数据库”;
  103. }
  104. // 辅助函数:安全输出
  105. function safe_output($value) {
  106.     return !empty($value) && $value !== ‘-‘ ? nl2br(htmlspecialchars($value)) : ‘<span style=”color: #bbb;”>暂无</span>’;
  107. }
  108. ?>
  109. <!DOCTYPE html>
  110. <html lang=”zh-CN”>
  111. <head>
  112.     <meta charset=”UTF-8″>
  113.     <meta name=”viewport” content=”width=device-width, initial-scale=1.0″>
  114.     <title>药品数据库查询系统</title>
  115.     <style>
  116.         * {
  117.             margin: 0;
  118.             padding: 0;
  119.             box-sizing: border-box;
  120.         }
  121.         body {
  122.             font-family: -apple-system, BlinkMacSystemFont, “Segoe UI”, “Microsoft YaHei”, sans-serif;
  123.             background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  124.             min-height: 100vh;
  125.             padding: 20px;
  126.         }
  127.         .container {
  128.             max-width: 1400px;
  129.             margin: 0 auto;
  130.         }
  131.         .header {
  132.             background: white;
  133.             border-radius: 10px;
  134.             padding: 25px 30px;
  135.             margin-bottom: 20px;
  136.             box-shadow: 0 10px 30px rgba(0,0,0,0.2);
  137.         }
  138.         h1 {
  139.             color: #667eea;
  140.             margin-bottom: 8px;
  141.             font-size: 26px;
  142.         }
  143.         .db-stats {
  144.             color: #666;
  145.             font-size: 14px;
  146.         }
  147.         .search-box {
  148.             background: white;
  149.             border-radius: 10px;
  150.             padding: 25px 30px;
  151.             margin-bottom: 20px;
  152.             box-shadow: 0 10px 30px rgba(0,0,0,0.2);
  153.         }
  154.         .search-hint {
  155.             color: #667eea;
  156.             font-size: 13px;
  157.             margin-bottom: 15px;
  158.             padding: 10px;
  159.             background: #f0f4ff;
  160.             border-radius: 5px;
  161.             border-left: 3px solid #667eea;
  162.         }
  163.         .search-form {
  164.             display: flex;
  165.             gap: 10px;
  166.             flex-wrap: wrap;
  167.         }
  168.         .search-type {
  169.             padding: 12px;
  170.             border: 2px solid #e0e0e0;
  171.             border-radius: 5px;
  172.             font-size: 15px;
  173.             flex: 0 0 140px;
  174.             background: white;
  175.         }
  176.         .search-input {
  177.             padding: 12px;
  178.             border: 2px solid #e0e0e0;
  179.             border-radius: 5px;
  180.             font-size: 15px;
  181.             flex: 1;
  182.             min-width: 250px;
  183.         }
  184.         .search-input:focus {
  185.             outline: none;
  186.             border-color: #667eea;
  187.         }
  188.         .search-btn {
  189.             padding: 12px 30px;
  190.             background: #667eea;
  191.             color: white;
  192.             border: none;
  193.             border-radius: 5px;
  194.             font-size: 15px;
  195.             cursor: pointer;
  196.             transition: background 0.3s;
  197.             font-weight: 500;
  198.         }
  199.         .search-btn:hover {
  200.             background: #5568d3;
  201.         }
  202.         .message {
  203.             background: white;
  204.             border-radius: 10px;
  205.             padding: 15px 20px;
  206.             margin-bottom: 20px;
  207.             box-shadow: 0 5px 15px rgba(0,0,0,0.1);
  208.         }
  209.         .error {
  210.             background: #fee;
  211.             color: #c33;
  212.             border-left: 4px solid #c33;
  213.         }
  214.         .info {
  215.             background: #e7f3ff;
  216.             color: #0066cc;
  217.             border-left: 4px solid #0066cc;
  218.         }
  219.         .results {
  220.             background: white;
  221.             border-radius: 10px;
  222.             padding: 20px;
  223.             box-shadow: 0 10px 30px rgba(0,0,0,0.2);
  224.         }
  225.         .drug-card {
  226.             border: 1px solid #ddd;
  227.             border-radius: 8px;
  228.             margin-bottom: 20px;
  229.             overflow: hidden;
  230.             transition: all 0.3s;
  231.             background: #fafafa;
  232.         }
  233.         .drug-card:hover {
  234.             border-color: #667eea;
  235.             box-shadow: 0 4px 15px rgba(102, 126, 234, 0.15);
  236.         }
  237.         /* 核心信息区 */
  238.         .drug-header {
  239.             background: white;
  240.             padding: 20px 25px;
  241.             border-bottom: 2px solid #f0f0f0;
  242.         }
  243.         .drug-title-row {
  244.             display: flex;
  245.             align-items: baseline;
  246.             gap: 15px;
  247.             margin-bottom: 15px;
  248.             flex-wrap: wrap;
  249.         }
  250.         .drug-generic-name {
  251.             font-size: 22px;
  252.             font-weight: bold;
  253.             color: #333;
  254.         }
  255.         .drug-trade-name {
  256.             font-size: 16px;
  257.             color: #667eea;
  258.             font-weight: 500;
  259.         }
  260.         .drug-badges {
  261.             display: flex;
  262.             gap: 8px;
  263.             flex-wrap: wrap;
  264.         }
  265.         .badge {
  266.             display: inline-block;
  267.             padding: 4px 12px;
  268.             background: #f0f0f0;
  269.             border-radius: 4px;
  270.             font-size: 12px;
  271.             color: #666;
  272.         }
  273.         .badge.primary {
  274.             background: #e7f3ff;
  275.             color: #0066cc;
  276.         }
  277.         /* 基础信息网格 */
  278.         .basic-info-grid {
  279.             display: grid;
  280.             grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  281.             gap: 12px;
  282.             padding: 20px 25px;
  283.             background: white;
  284.         }
  285.         .info-row {
  286.             display: flex;
  287.             gap: 10px;
  288.             font-size: 14px;
  289.             line-height: 1.6;
  290.         }
  291.         .info-label {
  292.             font-weight: 600;
  293.             color: #555;
  294.             min-width: 80px;
  295.             flex-shrink: 0;
  296.         }
  297.         .info-value {
  298.             color: #333;
  299.             flex: 1;
  300.         }
  301.         /* 详细说明区 */
  302.         .drug-details {
  303.             padding: 20px 25px;
  304.             background: white;
  305.         }
  306.         .detail-block {
  307.             margin-bottom: 20px;
  308.             padding-bottom: 20px;
  309.             border-bottom: 1px solid #f0f0f0;
  310.         }
  311.         .detail-block:last-child {
  312.             border-bottom: none;
  313.             margin-bottom: 0;
  314.             padding-bottom: 0;
  315.         }
  316.         .detail-title {
  317.             font-weight: bold;
  318.             color: #667eea;
  319.             margin-bottom: 8px;
  320.             font-size: 15px;
  321.         }
  322.         .detail-content {
  323.             color: #555;
  324.             line-height: 1.8;
  325.             font-size: 14px;
  326.         }
  327.         .section-divider {
  328.             height: 2px;
  329.             background: #f0f0f0;
  330.             margin: 0;
  331.         }
  332.         .no-results {
  333.             text-align: center;
  334.             padding: 40px;
  335.             color: #999;
  336.             font-size: 16px;
  337.         }
  338.         @media (max-width: 768px) {
  339.             .basic-info-grid {
  340.                 grid-template-columns: 1fr;
  341.             }
  342.         }
  343.         @media print {
  344.             body {
  345.                 background: white;
  346.             }
  347.             .search-box, .header {
  348.                 display: none;
  349.             }
  350.         }
  351.     </style>
  352. </head>
  353. <body>
  354.     <div class=”container”>
  355.         <div class=”header”>
  356.             <h1>药品数据库查询系统</h1>
  357.             <div class=”db-stats”><?php echo htmlspecialchars($db_stats); ?></div>
  358.         </div>
  359.         <div class=”search-box”>
  360.             <div class=”search-hint”>
  361.                 &#128161; <strong>智能搜索提示:</strong>输入多个关键词用空格分隔,如 “阿莫西林 进口”、”布洛芬 儿童”,系统将自动组合匹配
  362.             </div>
  363.             <form method=”POST” class=”search-form”>
  364.                 <select name=”search_type” class=”search-type”>
  365.                     <option value=”smart” <?php echo $search_type === ‘smart’ ? ‘selected’ : ”; ?>>智能搜索</option>
  366.                     <option value=”generic_name” <?php echo $search_type === ‘generic_name’ ? ‘selected’ : ”; ?>>通用名称</option>
  367.                     <option value=”trade_name” <?php echo $search_type === ‘trade_name’ ? ‘selected’ : ”; ?>>商品名称</option>
  368.                     <option value=”manufacturer” <?php echo $search_type === ‘manufacturer’ ? ‘selected’ : ”; ?>>生产企业</option>
  369.                     <option value=”approval_number” <?php echo $search_type === ‘approval_number’ ? ‘selected’ : ”; ?>>批准文号</option>
  370.                 </select>
  371.                 <input type=”text” name=”search_term” class=”search-input”
  372.                        placeholder=”如:阿莫西林 进口”
  373.                        value=”<?php echo htmlspecialchars($search_term); ?>” required>
  374.                 <button type=”submit” class=”search-btn”>&#128269; 查询</button>
  375.             </form>
  376.         </div>
  377.         <?php if ($error): ?>
  378.             <div class=”message error”>
  379.                 &#10060; <?php echo htmlspecialchars($error); ?>
  380.             </div>
  381.         <?php endif; ?>
  382.         <?php if ($query_info): ?>
  383.             <div class=”message info”>
  384.                 &#8505;&#65039; <?php echo htmlspecialchars($query_info); ?>
  385.             </div>
  386.         <?php endif; ?>
  387.         <?php if (!empty($results)): ?>
  388.             <div class=”results”>
  389.                 <?php foreach ($results as $drug): ?>
  390.                     <div class=”drug-card”>
  391.                         <!– 核心信息区 –>
  392.                         <div class=”drug-header”>
  393.                             <div class=”drug-title-row”>
  394.                                 <span class=”drug-generic-name”>
  395.                                     <?php echo htmlspecialchars($drug[‘通用名称’] ?? ‘未知药品’); ?>
  396.                                 </span>
  397.                                 <?php if (!empty($drug[‘商品名称’])): ?>
  398.                                     <span class=”drug-trade-name”>
  399.                                         [<?php echo htmlspecialchars($drug[‘商品名称’]); ?>]
  400.                                     </span>
  401.                                 <?php endif; ?>
  402.                             </div>
  403.                             <div class=”drug-badges”>
  404.                                 <?php if (!empty($drug[‘药品性质’])): ?>
  405.                                     <span class=”badge primary”><?php echo htmlspecialchars($drug[‘药品性质’]); ?></span>
  406.                                 <?php endif; ?>
  407.                                 <?php if (!empty($drug[‘药品分类’])): ?>
  408.                                     <span class=”badge”><?php echo htmlspecialchars($drug[‘药品分类’]); ?></span>
  409.                                 <?php endif; ?>
  410.                             </div>
  411.                         </div>
  412.                         <!– 基础信息网格 –>
  413.                         <div class=”basic-info-grid”>
  414.                             <div class=”info-row”>
  415.                                 <span class=”info-label”>生产企业</span>
  416.                                 <span class=”info-value”><?php echo safe_output($drug[‘生产企业’]); ?></span>
  417.                             </div>
  418.                             <div class=”info-row”>
  419.                                 <span class=”info-label”>批准文号</span>
  420.                                 <span class=”info-value”><?php echo safe_output($drug[‘批准文号’]); ?></span>
  421.                             </div>
  422.                             <div class=”info-row”>
  423.                                 <span class=”info-label”>规格</span>
  424.                                 <span class=”info-value”><?php echo safe_output($drug[‘规格’]); ?></span>
  425.                             </div>
  426.                             <div class=”info-row”>
  427.                                 <span class=”info-label”>汉语拼音</span>
  428.                                 <span class=”info-value”><?php echo safe_output($drug[‘汉语拼音’]); ?></span>
  429.                             </div>
  430.                             <div class=”info-row”>
  431.                                 <span class=”info-label”>贮藏</span>
  432.                                 <span class=”info-value”><?php echo safe_output($drug[‘贮藏’]); ?></span>
  433.                             </div>
  434.                             <div class=”info-row”>
  435.                                 <span class=”info-label”>有效期</span>
  436.                                 <span class=”info-value”><?php echo safe_output($drug[‘有效期’]); ?></span>
  437.                             </div>
  438.                             <?php if (!empty($drug[‘相关疾病’])): ?>
  439.                             <div class=”info-row”>
  440.                                 <span class=”info-label”>相关疾病</span>
  441.                                 <span class=”info-value”><?php echo safe_output($drug[‘相关疾病’]); ?></span>
  442.                             </div>
  443.                             <?php endif; ?>
  444.                             <?php if (!empty($drug[‘性状’])): ?>
  445.                             <div class=”info-row”>
  446.                                 <span class=”info-label”>性状</span>
  447.                                 <span class=”info-value”><?php echo safe_output($drug[‘性状’]); ?></span>
  448.                             </div>
  449.                             <?php endif; ?>
  450.                         </div>
  451.                         <div class=”section-divider”></div>
  452.                         <!– 详细说明区 –>
  453.                         <div class=”drug-details”>
  454.                             <?php if (!empty($drug[‘主要成份’])): ?>
  455.                             <div class=”detail-block”>
  456.                                 <div class=”detail-title”>主要成份</div>
  457.                                 <div class=”detail-content”><?php echo safe_output($drug[‘主要成份’]); ?></div>
  458.                             </div>
  459.                             <?php endif; ?>
  460.                             <?php if (!empty($drug[‘适应症’])): ?>
  461.                             <div class=”detail-block”>
  462.                                 <div class=”detail-title”>适应症</div>
  463.                                 <div class=”detail-content”><?php echo safe_output($drug[‘适应症’]); ?></div>
  464.                             </div>
  465.                             <?php endif; ?>
  466.                             <?php if (!empty($drug[‘用法用量’])): ?>
  467.                             <div class=”detail-block”>
  468.                                 <div class=”detail-title”>用法用量</div>
  469.                                 <div class=”detail-content”><?php echo safe_output($drug[‘用法用量’]); ?></div>
  470.                             </div>
  471.                             <?php endif; ?>
  472.                             <?php if (!empty($drug[‘不良反应’])): ?>
  473.                             <div class=”detail-block”>
  474.                                 <div class=”detail-title”>不良反应</div>
  475.                                 <div class=”detail-content”><?php echo safe_output($drug[‘不良反应’]); ?></div>
  476.                             </div>
  477.                             <?php endif; ?>
  478.                             <?php if (!empty($drug[‘禁忌’])): ?>
  479.                             <div class=”detail-block”>
  480.                                 <div class=”detail-title”>禁忌</div>
  481.                                 <div class=”detail-content”><?php echo safe_output($drug[‘禁忌’]); ?></div>
  482.                             </div>
  483.                             <?php endif; ?>
  484.                             <?php if (!empty($drug[‘注意事项’])): ?>
  485.                             <div class=”detail-block”>
  486.                                 <div class=”detail-title”>注意事项</div>
  487.                                 <div class=”detail-content”><?php echo safe_output($drug[‘注意事项’]); ?></div>
  488.                             </div>
  489.                             <?php endif; ?>
  490.                             <?php if (!empty($drug[‘孕妇及哺乳期妇女用药’])): ?>
  491.                             <div class=”detail-block”>
  492.                                 <div class=”detail-title”>孕妇及哺乳期妇女用药</div>
  493.                                 <div class=”detail-content”><?php echo safe_output($drug[‘孕妇及哺乳期妇女用药’]); ?></div>
  494.                             </div>
  495.                             <?php endif; ?>
  496.                             <?php if (!empty($drug[‘儿童用药’])): ?>
  497.                             <div class=”detail-block”>
  498.                                 <div class=”detail-title”>儿童用药</div>
  499.                                 <div class=”detail-content”><?php echo safe_output($drug[‘儿童用药’]); ?></div>
  500.                             </div>
  501.                             <?php endif; ?>
  502.                             <?php if (!empty($drug[‘老人用药’])): ?>
  503.                             <div class=”detail-block”>
  504.                                 <div class=”detail-title”>老人用药</div>
  505.                                 <div class=”detail-content”><?php echo safe_output($drug[‘老人用药’]); ?></div>
  506.                             </div>
  507.                             <?php endif; ?>
  508.                             <?php if (!empty($drug[‘药物相互作用’])): ?>
  509.                             <div class=”detail-block”>
  510.                                 <div class=”detail-title”>药物相互作用</div>
  511.                                 <div class=”detail-content”><?php echo safe_output($drug[‘药物相互作用’]); ?></div>
  512.                             </div>
  513.                             <?php endif; ?>
  514.                             <?php if (!empty($drug[‘药理毒理’])): ?>
  515.                             <div class=”detail-block”>
  516.                                 <div class=”detail-title”>药理毒理</div>
  517.                                 <div class=”detail-content”><?php echo safe_output($drug[‘药理毒理’]); ?></div>
  518.                             </div>
  519.                             <?php endif; ?>
  520.                             <?php if (!empty($drug[‘药代动力学’])): ?>
  521.                             <div class=”detail-block”>
  522.                                 <div class=”detail-title”>药代动力学</div>
  523.                                 <div class=”detail-content”><?php echo safe_output($drug[‘药代动力学’]); ?></div>
  524.                             </div>
  525.                             <?php endif; ?>
  526.                         </div>
  527.                     </div>
  528.                 <?php endforeach; ?>
  529.             </div>
  530.         <?php elseif ($_SERVER[‘REQUEST_METHOD’] === ‘POST’ && empty($error)): ?>
  531.             <div class=”results”>
  532.                 <div class=”no-results”>&#128533; 未找到符合条件的药品信息</div>
  533.             </div>
  534.         <?php endif; ?>
  535.     </div>
  536. </body>
  537. </html>
【版权声明】:服务器导航网所有内容均来自网络和部分原创,若无意侵犯到您的权利,请及时与联系 QQ 2232175042,将在48小时内删除相关内容!!

给TA服务器
共{{data.count}}人
人已服务器
其它源码

PHP朋友圈系统,恋爱日记

2025-10-13 12:27:21

其它源码

一梦软件库h5端软件资源下载主题系统源码搭建

2025-10-14 14:30:32

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索