私のウェブサイトでキーワード検索を作成しようとしています。
検索バーがあり、怒りなどのキーワードを入力します。私の URL はwww.website.com/?s=angryになります
VARCHAR フィールドのキーワードに対して mysql 検索クエリを実行するにはどうすればよいですか?
ありがとう
PHP
$search = $_GET['s']; //clean this up to avoid sql injection
MySQL
SELECT * FROM MyTable
WHERE field1 LIKE '%search%' OR
field2 LIKE '%search%' OR
...
fieldn LIKE '%search%'
どこsearch
をユーザーが入力したものに置き換える必要があります
LIKE
SQLステートメントで使用できます。
$search = $mysqli->real_escape_string($_GET['s']);
$query = "select column from table where varchar_column like '%$search%'";
これにより、VARCHAR列で検索文字列のすべての出現箇所が検索されます。
編集:SQLインジェクションを防ぐのに役立つコードを追加しました。明らかに、本番環境にクエリを適用するときは、クエリをインジェクションから常に保護する必要があります。
まず、URL から検索文字列を取得する必要があります。これは、$_GET グローバルを使用して php で実行できます。キーは、URL の「s=」部分を表します。
$search = $_GET['s'];
次に、フィールドを検索するために MYSQL クエリを作成する必要があります
SELECT * (or whatever column you need) FROM (table) WHERE (column) LIKE '%($search)%'
$search 変数が自動的にエスケープされるように、PDO 準備済みステートメントを使用してクエリを実行することをお勧めします。