0

データベース フィールド 'name' と 'address' を検索する 1 つの検索フォームと、データベース フィールド 'type' を検索して結果を search_results.php ページに表示するドロップ ダウン リストがあります。私の基本的な目的は、たとえば「砂丘」の名前と住所のフィールドを検索し、「砂丘」を含むすべての単語と一致する結果を得ることです。たとえば、「砂丘」を検索すると、「binedune」などの結果が返されます。 「countdune」「sanddune」など

また、特にドロップダウン リストを使用しているときに検索で空の結果が返された場合、「空の部分文字列」エラーが表示されるのは望ましくありません。たとえば、データベースの「マーカー」テーブルの「タイプ」列には、フィールド「ニューヨーク」、「ミュンヘン」、「ロンドン」、および「ナイロビ」が含まれています。これは、「ニュージャージー」、「カイロ」などの他の都市に加えて、ドロップダウン リストに表示されるリスト オプションと同じです。たとえば、「カイロ」を選択すると、データベースで検索が行われますが、見つかりません。 Cairo を呼び出して、「Got error empty (sub)expression」というエラーを返します。

これは私がこれまでに持っているものです:

ページ名: search_results.php

<?PHP
//include db connection and functions file
require_once("lib/db.php");
require_once("lib/functions.php");

//Get POST vars from search form and drop down list

$name = "";
if(!empty($_POST['name'])){
    $name = mysql_real_escape_string(trim($_POST['name']));
}

if(!empty($_POST['address'])){
    $address = mysql_real_escape_string(trim($_POST['address']));
}

$type = "";
if(!empty($_POST['type'])){
    $type = mysql_real_escape_string(trim($_POST['type']));
}

//search form here. It redirects to this page, same as the drop down list which uses javascript to post vars to this same page

//This is the SQL query that is giving me the nightmares

$query="SELECT * FROM markers WHERE name REGEXP '^(".$name.")' OR address REGEXP '^(".$address.")' OR type REGEXP '^(".$type.")' AND active = 1";

$result=mysql_query($query) or die(mysql_error());
//display results here

問題は、データベースに 'type' に一致するものがない場合、Got error 'empty (sub)expression. 任意の支援をいただければ幸いです

4

0 に答える 0