2016-12-22 21 views
0

私はMySQLデータベースに接続するPHPで作られたHTML検索フォームを持っており、列と行のあるテーブルを見つけて、このデータをテーブルの下にエコーで表示します。Mysqlデータベースからさらに検索結果を出力するにはどうすればよいですか?

$output = "Document ID: ".$results['id']."<br><a href='".$results['url']."'>".$results['name']."</a> (".$results['short_withtag'].")<br><span style='font-size: 12px;'>Bad search result? Try a different keyword</span> 

カラムは、ID、名前、短い、short_withtagおよびURL、各々が特定のデータを含んでいます。問題は、私がパイのようなキーワード(すべての行に存在するそのような用語)を入力すると、1つの検索結果しか表示されないということです。どのように表示するのですか?

mysql_query("SELECT * FROM env 
WHERE (`id` LIKE '%".$query."%') OR (`name` LIKE '%".$query."%') OR (`short` LIKE '%".$query."%') OR (`short_withtag` LIKE '%".$query."%') OR (`url` LIKE '%".$query."%')") or die(mysql_error()); 
+0

使用しているMySQLクエリを投稿してください。 – TheValyreanGroup

+0

大丈夫、私は自分の投稿を編集しました。 – Cd5ssmffan

+0

クエリの結果を配列に取得し、毎回$ output変数にループを追加する必要があります。あなたは現在、結果セットの最初の行を保存しています。 – TheValyreanGroup

答えて

1

ちょうど配列にすべての行を取得し、foreachループとして出力して:ここで

は、私が使用するクエリです。

あなたはこのようにそれを行うことができます。これは、物事の非常に時代遅れと非常に安全ではないか、維持可能な方法であることを

$result = mysql_query("SELECT * FROM env 
WHERE (`id` LIKE '%".$query."%') OR (`name` LIKE '%".$query."%') OR (`short` LIKE '%".$query."%') OR (`short_withtag` LIKE '%".$query."%') OR (`url` LIKE '%".$query."%')") or die(mysql_error()); 

// If query is successful 
if ($result) { 

    // Create an empty array to which we're going to put rows 
    $dataForTheOutput = array(); 

    // Now push each row into the array 
    while ($row = mysql_fetch_assoc($result)) { 

     array_push($dataForTheOutput, $row); 

    } 

    // Now you can output data 

    if (empty($dataForTheOutput)) { 

     echo 'No results found'; 

    } else { 

     // Using foreach loop display each row 
     foreach ($dataForTheOutput as $component) { 

      echo "Document ID: ".$component['id']."<br><a href='".$component['url']."'>".$component['name']."</a> (".$component['short_withtag'].")<br><span style='font-size: 12px;'>Bad search result? Try a different keyword</span> 

     } 

    } 

} 

注意を。

関連する問題