php Mysql搜索多个列

时间:2015-03-09 20:33:22

标签: php

您好,我从Youtube教程获得了以下代码,如果我搜索仅存在于1列中的字符串,它就可以工作。如果我将搜索结果放在两个不同的列中,那么我就没有结果。 例如,如果Jack在第1列,Rabbit在第2列,如果我搜索" Jack Rabbit"然后我根本没有结果,如果我搜索"杰克"然后它起作用,同样适用于" Rabbit"。

我知道修复程序在下面的行中,但当我根据我搜索的stackoverflow上的其他帖子更改行时,我收到错误,因为他们的代码与我的有点不同。

$query = mysql_query("SELECT * FROM myTable WHERE columnOne LIKE '%$searchq%' OR columnTwo LIKE '%$searchq%'  ") or die("Could not search!");

以下全部搜索代码

<?php
mysql_connect("localhost", "Name_Name", "Password") or die("Could not connect");
mysql_select_db("Name_Databse") or die("Could not find db!");
$output = ' ' ;
//collect

if(isset($_POST['search'])) {
        $searchq = $_POST['search'];
        $searchq = preg_replace("#[^0-9a-z]#i", " ", $searchq);

        $query = mysql_query("SELECT * FROM myTable WHERE columnOne LIKE '%$searchq%' OR columnTwo LIKE '%$searchq%'  ") or die("Could not search!");
        $count = mysql_num_rows($query);
        if($count == 0) {
        $output = 'There was no such results!';

        }else{
            while($row = mysql_fetch_array($query)){
            $id = $row['id'];
            $aHref = $row['aHref'];
            $columnOne = $row['columnOne'];
            $columnTwo = $row['columnTwo'];
            $inputDiv = $row['inputDiv'];
            $image = $row['image'];


$output .= '<a href="' . $aHref . '.html" class="link"> <div class="Poster">' .  ' <div class="columnOne">' . $columnOne . ' </div> <div class="columnTwo">' . $columnTwo . ' </div>    <div class="inputDiv">' . $inputDiv . ' </div>  <div class="image"><img src="' . $image . '.jpg"/>' . '</div> </div></a>';


            }
    }   

}


?>

<!DOCTYPE html>
<html>
<head>              
        <title> Search </title>
        <link rel='stylesheet' type='text/css' href='Styler.css'/>

</head>
<body>



                    <form action='search.php' method='post' style="margin: 0 0 25px;">
                    <input type='text' name='search' size='50' placeholder="Search here"/>
                    <input type='submit' value='Search' />
                    </form>

                        <?php print("$output"); ?> 





</script>               
</body>
</html>

1 个答案:

答案 0 :(得分:3)

如何组合两列并进行搜索:

SELECT * FROM myTable WHERE columnOne LIKE '%$searchq%' OR columnTwo LIKE '%$searchq%' OR CONCAT_WS(' ', columnOne, columnTwo) LIKE  '%$searchq%'

这只会在搜索“columnOne + [space] + columnTwo”时才有效。如果你想能够匹配他们输入的任何单词(即搜索“Jack W. Rabbit”仍然匹配),那么你将使用之前建议的爆炸方法。