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

更新时间: 2025-10-14      阅读 收藏
立即下载

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

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


作者原版数据库文件网盘链接见附件
药品说明书查询软件网页PHP版本(图1)

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


作者原版数据库文件网盘链接: 

- THE END -
取消
微信二维码
微信二维码
支付宝二维码
最新推荐
推荐标签