MySQL LIKE关键字多列但查询了哪个列?

时间:2015-01-24 04:40:00

标签: php mysql sql

下面有两个脚本。第一个脚本仅在一个列中搜索用户类型的关键字,然后它将结果显示为列表并使用户键入的字符变为BOLD。那个脚本效果很好。

第二个脚本是我修改为搜索多个列的内容。它搜索得很好。问题是如果搜索的值来自其他列,我无法获得BOLD(或STRONG)。如何确定搜索值是否来自第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>';
     }
?>

1 个答案:

答案 0 :(得分:0)

小心,在第二个脚本的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>';