質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

3515閲覧

php+postgresqlであいまいかつAND検索をしたいです。→○_○_  ○は単語、_はスペースです

samazama4623

総合スコア59

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2015/04/07 09:26

タイトルの通り、あいまいかつAND検索をしたいです。
たとえばフォームに
田中 太郎 会社
など複数単語を入力したときあいまい検索かつAnd検索の方法を教えてください。
単語と単語のスペースは半角でも全角でも検索できるようにしたいのです。
前回は動的にWHERE句とOR句をつけるようにして複数の入力フォームに対応できるようにしました。下のコードがそれです。
今回、下のコードを改造か全く書き直していきたいのですが
どのように行えばよろしいでしょうか?
LIKEの動的な生成の仕方がわからないです

'''lang-php
$pgsql = 'SELECT * FROM t_application';
//プレースホルダを使用する
//emptyが空でなかったらsqlを実行する
// 検索項目
$search_params = array('application_id', 'name', 'kana', 'mail');

$eq = array(); $val = array(); // foreachで回してempty判断 foreach($search_params as $value) { // POSTされていればWHERE作る if(!empty( $_POST[$value] )) { $eq[] = $value.' = ?'; $val[] = $_POST[$value]; } } $index = 0; $add_where = array(); // $add_or = array(); foreach ($eq as $value){ //最初だったらwhereをつける if ($index == 0) { // where 付与 $add_where[] = " where ".$value; } else { // or 付与 $add_where[] = " or ".$value; } $index++; } $pgsql = 'SELECT * FROM t_application '; foreach ( $add_where as $value ){ //foreachで$add_orの数だけ$add_orを足していく $pgsql .= $value; } $stmt = $dbh->prepare($pgsql); // ?に入れるデータを準備 $data = $val; //$data =array("$application_id","$name","$kana"); $stmt->execute($data); // 結果を取得 $rec = $stmt->fetch(PDO::FETCH_ASSOC);

'''

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

プログラムの前に、想定される SQL を psql 上で手で発行してみて、
正しい結果が帰ってくるかどうかを検証したほうがいいんじゃないでしょうか。

いくつか SQL のパターンが見えてきたら、初めてそれを動的に構築
するためのロジックを考えてみる。

ちなみに PostgreSQL では正規表現も使えますので、
WHERE 項目名 ~ '^[aAあ][ ]' なんてこともできます。

http://www.postgresql.jp/document/9.3/html/functions-matching.html#FUNCTIONS-POSIX-REGEXP

投稿2015/04/07 12:03

hotta

総合スコア1613

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問