私のデータベースGROUP?
CREATE TABLE `mytable` (
`id` smallint(4) UNSIGNED NOT NULL,
`name` char(30) NOT NULL,
`country` char(30) NOT NULL
)
ENGINE=MyISAM DEFAULT CHARSET=utf8;
マイデータ
id | name | country
-----|-------------------|--------
1 | Tom Hanks | Usa
2 | Monica Bellucci | Italy
3 | Takeshi Kitano | Japan
4 | Javier Bardem | Spain
5 | Jim Carrey | Canada
6 | Luc Besson | France
7 | Leonardo DiCaprio | Usa
8 | Pedro Almodovar | Spain
9 | Ryan Gosling | Canada
10 | Terence Hill | Italy
11 | Jean Reno | France
12 | Roland Emmerich | Germany
13 | Mamoru Hosoda | Japan
14 | James Cameron | Canada
15 | Tom Cruise | Usa
16 | Penélope Cruz | Spain
17 | Sergio Leone | Italy
18 | Claude Lelouch | France
19 | Max Riemelt | Germany
20 | Hiroyuki Sanada | Japan
私は、データベースに私は、ドロップダウンリストの既存の国で表示される(国名を入力するための)検索入力テキストを持っている
マイクエリ送信キーワードとは、私の国(ID付き)、それが正常に動作しますが、それは重複して国を表示返し
<?php
require_once '../config/dbconnect.php';
if(!empty($_POST["keyword"])) {
$result = $conn->query("SELECT id, country FROM mytable WHERE country LIKE '%".$_POST["keyword"]."%' ORDER BY country LIMIT 10");
$rowCount = $result->num_rows;
if($rowCount > 0){
while($row = $result->fetch_assoc()){
echo '<option value='.$row["id"].'>'.$row["country"].'</option>';
}
}
}
?>
私は句
GROUP BY
を使用しますが、それは動作しません
問題は、私は、重複せずに異なる値のみを国を表示しなければならないということである、と私は解決策が見つからない、
、ドロップダウンリストには、空白のまま私はどのようにして問題を解決できるのか分かりません
ありがとうございました!
あなたは既に**有界変数入力して、あなたは[SQLインジェクション]と照らし合わせてデータベースを保護するために、プレースホルダ(準備文)とのパラメータ化クエリを使用する必要があります**プリペアドステートメントをサポートしてAPIを使用しています( http://stackoverflow.com/q/60174/)! ['mysqli :: prepare()'](http://php.net/mysqli.prepare)と['mysqli_stmt :: bind_param()'](http://php.net/mysqli-stmt)から始めましょう。 .bind-param)。 – Qirel
事はある、あなたのテーブルのidは人ではなく、国を指します。おそらく 'SELECT DISTINCT国FROM mytable'を使い、それを値と表示されたテキストの両方に使用したいだけです。 –
これはデータベース設計の問題のようです。明らかに 'name'か' country'のどちらかがプライマリキーの属性ではありません。 – bassxzero