-1

仕事用の在庫システムを構築しています。データベースを検索するための検索システムが既にあります。しかし、名前にスペースが含まれているアイテムを検索すると、結果が見つかりません。これが私のスクリプトです。

    <?php
    // we connect to our Database
    mysql_connect("localhost", "root", "") or die(mysql_error());
    mysql_select_db("inventory") or die(mysql_error());

    $find = $_POST['find'];

    echo "<h2>Search Results:</h2><p>";
    //If they did not enter a search term we give them an error
    if ($find == "")
    {
    echo "<p>You forgot to enter a search term!";
    exit;
    }

    // We perform a bit of filtering
    $find = strtoupper($find);
    $find = strip_tags($find);
    $find = trim ($find);

    //Now we search for our search term, in the field the user specified
    $data = mysql_query("SELECT * FROM parts WHERE vendor LIKE'%$find%' OR category
    LIKE'%$find%' OR prtid LIKE'%$find%' OR description LIKE '%$find%'");
    if (!$data) { // add this check.
    die('Invalid query: ' . mysql_error());
}
4

2 に答える 2

1

%全体として検索テキストの外側にのみワイルドカードを挿入します。複数単語の検索文字列を処理する場合は、より複雑なクエリを作成する必要があります。

于 2012-07-17T20:37:08.250 に答える
0
$searchTerms = explode(' ', $find);
$searchTermBits = array();
foreach ($searchTerms as $term) {
    $term = trim($term);
    if (!empty($term)) {
        $searchTermBits[] = "vendor LIKE '%$term%'";
    }
}

次に、クエリで$termの代わりに$searchTermBitsをインプロードします

于 2012-07-17T20:40:38.280 に答える