php - MySQL LIKE 关键字多列但查询哪列?

标签 php mysql sql

我有下面两个脚本。第一个脚本仅在一个列中搜索用户输入的关键字,然后它将结果显示为列表并将用户输入的字符显示为粗体。该脚本效果很好。

我修改了第二个脚本来搜索多个列。它搜索得很好。问题是,如果搜索的值来自其他列,我无法获得粗体(或变强)。如何确定搜索值是否来自第 1 列、第 2 列、第 3 列等...?如果搜索的值来自“DESCRIP”列,那么我想在列出的值中将字母加粗。

第一个脚本:

<?php
   require_once("../config.php");
   $keyword = '%'.$_POST['keyword'].'%';
   $rootval = $_POST['rval'];
   $sql = "SELECT `ID`,`MUNTERS_PN`,`DESCRIP`, `IMG_PATH`, `MANUF`, `MANUF_PN` FROM `electrical_parts` WHERE `MUNTERS_PN` LIKE (:keyword) ORDER BY `MUNTERS_PN` ASC LIMIT 0, 5";
   $query = $db_qms->prepare($sql);
   $query->bindParam(':keyword', $keyword, PDO::PARAM_STR);
   $query->execute();
   $list = $query->fetchAll();
   foreach ($list as $rs) {

          // put in bold the written text
      $partnum = str_replace($_POST['keyword'], '<span style="font-weight:700;font-size:14px;">'.$_POST['keyword'].'</span>', $rs['MUNTERS_PN']);

          // add new option
      echo '<li class="set_part"  data-val="' . $rs['ID'] . '"><a href="' . $rootval . 'pages/show_part.php?t=electrical_parts&p=' . $rs['ID'] . '" class="part_link"><img src="' . $rootval . '../parts/' . $rs['IMG_PATH'] . '" width="100px;" style="padding-right:15px;">'.$partnum.'<span style="font-style:italic;font-size:13px;padding-left:10px;">[' . $rs['MANUF'] . ': ' . $rs['MANUF_PN'] . '] <br/>' . $rs['DESCRIP'] . '</span></a></li>';

   }
?>

第二个脚本:

<?php
   require_once("../config.php");
   $keyword = '%'.$_POST['keyword'].'%';
   $rootval = $_POST['rval'];
   $sql = "SELECT `ID`,`MUNTERS_PN`,`DESCRIP`, `IMG_PATH`, `MANUF`, `MANUF_PN` FROM `electrical_parts` WHERE (`MUNTERS_PN` LIKE (:keyword) OR `DESCRIP` LIKE (:keyword) OR `MANUF` LIKE (:keyword) OR `MANUF_PN` LIKE (:keyword) ) ORDER BY `MUNTERS_PN` ASC LIMIT 0, 5";
   $query = $db_qms->prepare($sql);
   $query->bindParam(':keyword', $keyword, PDO::PARAM_STR);
   $query->execute();
   $list = $query->fetchAll();
     foreach ($list as $rs) {

           /******* INSERT CODE TO DETERMINE WHICH COLUMN WAS QUERIED ******/           

            // put in bold the written text
        $partnum = str_replace($_POST['keyword'], '<span style="font-weight:700;font-size:14px;">'.$_POST['keyword'].'</span>', $rs['MUNTERS_PN']);
        $manuf = str_replace($_POST['keyword'], '<span style="font-weight:700;font-size:14px;">'.$_POST['keyword'].'</span>', $rs['MANUF']);
        $manuf_pn = str_replace($_POST['keyword'], '<span style="font-weight:700;font-size:14px;">'.$_POST['keyword'].'</span>', $rs['MANUF_PN']);
        $descrip = str_replace($_POST['keyword'], '<span style="font-weight:700;font-size:14px;">'.$_POST['keyword'].'</span>', $rs['DESCRIP']);
            // add new option
        echo '<li class="set_part"  data-val="' . $rs['ID'] . '"><a href="' . $rootval . 'pages/show_part.php?t=electrical_parts&p=' . $rs['ID'] . '" class="part_link"><img src="' . $rootval . '../parts/' . $rs['IMG_PATH'] . '" width="100px;" style="padding-right:15px;">'.$partnum.'<span style="font-style:italic;font-size:13px;padding-left:10px;">[' . $rs['MANUF'] . ': ' . $rs['MANUF_PN'] . '] <br/>' . $rs['DESCRIP'] . '</span></a></li>';
     }
?>

最佳答案

请注意,在第二个脚本的 echo 中,您使用 $rs['MANUF']、$rs['MANUF_PN'] 和 $rs['DESCRIP'] 而不是 $manuf、$manuf_pn 和 $descrip。 这就是为什么替换不会出现在输出中的原因。

所以你应该使用:

echo '<li class="set_part"  data-val="' . $rs['ID'] . '"><a href="' . $rootval . 'pages/show_part.php?t=electrical_parts&p=' . $rs['ID'] . '" class="part_link"><img src="' . $rootval . '../parts/' . $rs['IMG_PATH'] . '" width="100px;" style="padding-right:15px;">'.$partnum.'<span style="font-style:italic;font-size:13px;padding-left:10px;">[' . $rs['MANUF'] . ': ' . $manuf_pn . '] <br/>' . $descrip . '</span></a></li>';

关于php - MySQL LIKE 关键字多列但查询哪列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28122360/

相关文章:

MySQL DATE_FORMAT() 问题

PHP 最佳实践?

php - 何时使用::以及何时在文档中使用 #

mysql - javascript中父级回调之前的多个嵌套回调函数

php - 如何从查询中获取结果并将结果插入到其他表中?

sql - 在 Postgresql 中选择以字符串形式存储的分数作为十进制值

Mysql 仅当其所有子项都被选中时才返回一行

php - 带 SQL 的 WordPress 插件

php - Flash 和 PHP 脚本之间的安全通信

php - 与 mySQL 值链接的下拉列表值问题