0

好的,这是交易,我有一个数据库,假设有 2 列:“name”和“lastname”

当我在输入框中输入像“John”这样的名字时,它会从“name”列中检索所有 John 的名字。当我输入像“Doe”这样的姓氏时,它会从“lastname”列中检索所有 Doe。这按预期工作。

但是我希望它在我输入“John Doe”时也从两列中检索数据,所以它会返回所有 John Doe 的数据。在搜索栏中输入一个单词时,它可以正常工作,但是当我在空格后输入另一个单词时,它不会做我想要的,因为我不知道我应该如何正确地形成查询。

这是query.php的代码:

    <?php
    require_once("config.php");
    // Fetch the data
    $searchbar = $_POST['searchbar'];

    $querymilion = "SELECT * from lms.customers where `lastname` LIKE '%$searchbar%' OR `name` LIKE '%$searchbar%'";
    mysql_query('SET NAMES \'utf8\'');
    $resultmilion = @mysql_query($querymilion);

    // Return the results, loop through them and echo
    if($fraza) {
    while($rowmilion = mysql_fetch_array($resultmilion))
    {
    ?>
    <a href="javascript:klientid()" onClick="klientid()">
    <table id="tablesz" >
    <tr>
    <td style="font-weight:bold; width: 160px; text-align:right;">ID:</td>
    <td style="width:200px;" id="getidfromsearch"><?php echo $rowmilion['id']; ?></td>
    <td style="font-weight:bold; width: 50px; text-align:right;">PESEL:</td>
    <td style="width:200px;"><?php echo $rowmilion['ssn']; ?></td>
    </tr>
    <tr>
    <td style="font-weight:bold;width: 160px; text-align:right;">Nazwisko i Imię:</td>
    <td style="width:200px;"><?php echo $rowmilion['lastname']; ?> <?php echo   $rowmilion['name']; ?></td>
    <td style="font-weight:bold;width: 50px; text-align:right;">Dow.os.:</td>
    <td style="width:200px;"><?php echo $rowmilion['icn']; ?></td>
    </tr>
    <tr>
    <td style="font-weight:bold; width: 160px; text-align:right;">Adres instalacji</td>
    <td style="width:200px;"><?php echo $rowmilion['address']; ?></td>
    <td style="font-weight:bold; width: 50px; text-align:right;">Miasto:</td>
    <td style="width:200px;"><?php echo $rowmilion['zip']; ?> <?php echo $rowmilion['city']; ?>
    </td>
    </tr>
    </table>
    </a>
    <?php

    }
    }
    ?>

这是搜索栏:

    <div id="szukaj">
    <table id="tablesz" >
    <tr>
<td class="naglowek">Szukaj klienta</td>
    </tr>
    <tr>
<td>
<form id="myForm" enctype="multipart/form-data" action="query.php" method="post"  name="myForm">
<input type="text" name="searchbar" value="" />
<input type="submit" value="Szukaj" /> 
</form>
</td>
    </tr>
    <tr>
<td>
<span id="error"></span>
<span id="result"></span>
</td>
    </tr>
    </table>
    </div>
4

2 回答 2

0

问题是你的代码,

如果要进行搜索,例如John Doe需要将每个单词分开并放入谎言中,当然会降低查询速度。

IE:

$querymilion = "SELECT * from lms.customers 
where (`lastname` LIKE '%$John%' OR `name` LIKE '%$John%')
and (`lastname` LIKE '%$Doe%' OR `name` LIKE '%$Doe%')";

这将为您提供与John Doe.

于 2013-01-18T19:06:36.387 回答
0
SELECT * 
FROM  `actor` 
WHERE CONCAT( firstname,  ' ', lastname ) LIKE  "%$searchbar%"

当您的桌子增加时,这可能会变得非常慢。但它有效。如果您还希望将 firstname lastname 的顺序切换到 lastname firstname,只需将其添加到查询中:

OR CONCAT( lastname,  ' ', firstname ) LIKE  "%$searchbar%"
于 2013-01-18T19:29:09.623 回答