Php 搜索多个列

Php 搜索多个列,php,Php,我有一个大约100个用户的用户列表,我正在尝试创建一个搜索字段,以便更容易地找到某个用户。我想按用户数据库中的多个列进行搜索 我试着创建这个查询,但是我对这个非常陌生,我不确定所有的OR语句 这是我得到的 我的搜索表单: <form action="search-users.php" method="GET" class="no-margin"> <label>Type in a keyword to search for a user.</label><

我有一个大约100个用户的用户列表,我正在尝试创建一个搜索字段,以便更容易地找到某个用户。我想按用户数据库中的多个列进行搜索

我试着创建这个查询,但是我对这个非常陌生,我不确定所有的OR语句

这是我得到的

我的搜索表单:

<form action="search-users.php" method="GET" class="no-margin">
<label>Type in a keyword to search for a user.</label><br><br>
<input type="text" name="keywords" autocomplete="off" placeholder="Example: John Doe"><br>
<input type="submit" value="Search Users">
</form>
    <?php
    if(isset($_GET['keywords'])){
        $keywords = escape($_GET['keywords']);

        $search = DB::getInstance()->query("
        SELECT `username`,`first_name`,`last_name`,`unit`,`email`,`rent_own`,`city`,`zip`,`phone` FROM `users` WHERE 
        `username`    LIKE '%{keywords}%' OR
        `first_name`  LIKE '%{keywords}%' OR
        `last_name`   LIKE '%{keywords}%' OR
        `unit`        LIKE '%{keywords}%' OR
        `email`       LIKE '%{keywords}%' OR
        `rent_own`    LIKE '%{keywords}%' OR
        `city`        LIKE '%{keywords}%' OR
        `zip`         LIKE '%{keywords}%' OR
        `phone`       LIKE '%{keywords}%'   
        ");

    }

    ?>

    <!--SHOW HOW MANY RESULT ARE RETURNED-->
    <h3 class="blue-tx" align="center">Found <?php echo $search->Count()?> results</h3>

    <?php

    if ($search->Count()){
        foreach($search->results() as $s){
            ?>
    ....Display user results here.
<?php } } ?>

键入关键字以搜索用户。


然后是动作脚本:

<form action="search-users.php" method="GET" class="no-margin">
<label>Type in a keyword to search for a user.</label><br><br>
<input type="text" name="keywords" autocomplete="off" placeholder="Example: John Doe"><br>
<input type="submit" value="Search Users">
</form>
    <?php
    if(isset($_GET['keywords'])){
        $keywords = escape($_GET['keywords']);

        $search = DB::getInstance()->query("
        SELECT `username`,`first_name`,`last_name`,`unit`,`email`,`rent_own`,`city`,`zip`,`phone` FROM `users` WHERE 
        `username`    LIKE '%{keywords}%' OR
        `first_name`  LIKE '%{keywords}%' OR
        `last_name`   LIKE '%{keywords}%' OR
        `unit`        LIKE '%{keywords}%' OR
        `email`       LIKE '%{keywords}%' OR
        `rent_own`    LIKE '%{keywords}%' OR
        `city`        LIKE '%{keywords}%' OR
        `zip`         LIKE '%{keywords}%' OR
        `phone`       LIKE '%{keywords}%'   
        ");

    }

    ?>

    <!--SHOW HOW MANY RESULT ARE RETURNED-->
    <h3 class="blue-tx" align="center">Found <?php echo $search->Count()?> results</h3>

    <?php

    if ($search->Count()){
        foreach($search->results() as $s){
            ?>
    ....Display user results here.
<?php } } ?>
试试这个:

<?php
    if(isset($_GET['keywords'])){
        $keywords = escape($_GET['keywords']);

        $search = DB::getInstance()->query("
        SELECT `username`,`first_name`,`last_name`,`unit`,`email`,`rent_own`,`city`,`zip`,`phone` FROM `users` WHERE 
        `username`    LIKE '%keywords%' OR
        `first_name`  LIKE '%keywords%' OR
        `last_name`   LIKE '%keywords%' OR
        `unit`        LIKE '%keywords%' OR
        `email`       LIKE '%keywords%' OR
        `rent_own`    LIKE '%keywords%' OR
        `city`        LIKE '%keywords%' OR
        `zip`         LIKE '%keywords%' OR
        `phone`       LIKE '%keywords%'   
        ");

    }

    ?>

    <!--SHOW HOW MANY RESULT ARE RETURNED-->
    <h3 class="blue-tx" align="center">Found <?php echo $search->Count()?> results</h3>

    <?php

    if ($search->Count()){
        foreach($search->results() as $s){
            ?>
    ....Display user results here.
<?php } } ?>

您忘记了变量关键字中的
$

更改:


“%$KEYONS}%”=>“%$KEYONS}%”

您的
$KEYONS
绑定到查询的位置在哪里?@ex3v我会从搜索表单中获取关键字您不理解我的问题。变量
$keywords
包含表单中的一些关键字。我明白了。我的问题是-这个变量在代码的哪一部分传递给查询?查询如何“知道”必须用该变量填充
%%{keywords}%
字段?请将
'%%{keywords}%
更改为
'%{$keywords}%'
@ex3v我不确定,我想我最好找出那个变量。当我编写查询时,
DB::getInstance()->query
是一个类,不需要我绑定或执行。我尝试了您的解决方案,但没有成功。谢谢你的帮助。将
'%{keywords}%'
更改为
'%{$keywords}%'
成功了。我建议将“{keywords}%”更改为“%$keywords%”。当您在mysql服务器中执行相同的代码时,会出现什么错误?