• ベストアンサー

PHPとPostgreSQL

PHP4.3.1とPostgreSql7.2.4で簡単な検索システムを作っています。 ユーザーがWeb上から入力した値をSQLのWhere句に指定していますが、 大文字小文字の区別なく検索したい為、lowerを使っていますがうまく行きません。 $strWord=$txtWord//ユーザー入力文字列 //以下SQL $query = "select Title from t_Master Where lower(Title) like '%$strWord%')"; 全て大文字小文字の区別無しに検索できる方法がありましたらご教授ください。

  • sunnys
  • お礼率95% (176/185)
  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • eipu
  • ベストアンサー率39% (25/64)
回答No.1

下記でどうでしょう? 外してたらごめんなさい。 確認してません(^^; $strWord=strtolower($txtWord); //ユーザー入力文字列 //以下SQL $query = "select Title from t_Master Where lower(Title) like '%".$strWord."%')";

sunnys
質問者

お礼

できました! なるほど、ユーザー文字列のほうも小文字に変換してあげないといけませんでしたね。 すっかり抜けていました。 どうも有難うございました!

関連するQ&A

  • postgreSQL + PHPの連携

    現在postgreSQLとPHPを使い、 勉強を兼ねスクリプトを組んでいます。 が、早速つまづいてしまいました。。 [ID][名前][年齢]の3つのカラムがあります。 そこからIDが「10」の行を取得したいのですが、 どのように書けばよいのでしょうか? $sql = "SELECT * FROM TAB where(ID = 10)"; $rs = pg_query($cn, $sql); $row = pg_fetch_array($rs); echo "$row[ID]、$row[名前]、$row[年齢]"; 願わくば、と上のように書いたのですが、 「、、」と表示されるだけで…。 ご教示、お願いいたします。

    • ベストアンサー
    • PHP
  • AND検索のスクリプト記述方法(PostgreSQL)

    PostgreSQLとPHPを連携させたデータベースを作成しております。 入門書のスクリプトを流用してOR検索はできるようになったのですが,AND検索用の書き換えが上手くいきません。 下記は関連すると思われるスクリプトの一部を抜き出したものです。 単純にWHERE句のORをANDに変更しますと,AND検索にはなるのですが,すべての検索項目に検索語を入力しないと検索ができなくなりました。 尚,検索項目はyear,client,titleの3つです。 下記1行目も影響していると思うのですが書き換え方がわかりません。 当方が不勉強であることは重々承知しておりますが,アドバイス等いただけると幸いです。 $year_cond = $client_cond = $title_cond = "false"; if ($year != "") { $year_cond = "year LIKE '%{$year}%'"; } if ($client != "") { $client_cond = "client LIKE '%{$client}%'"; } if ($title != "") { $title_cond = "title LIKE '%{$title}%'"; } $sql = <<<EOS SELECT id, year, client, title, summary, summarypass, fulltext FROM houkokusyo WHERE {$year_cond} OR {$client_cond} OR {$title_cond} ORDER BY id EOS;

    • ベストアンサー
    • PHP
  • phpMyadminとPHP上からの違い?

    おせわになります よろしくお願いします SELECT COUNT(*) FROM テーブル名 WHERE dee = 0 AND Fee LIKE '%文字%' というSQL文があり、 phpMyadmin上からSQLを実行すると 4と表示されるのですが PHPから $sql = "SELECT COUNT(*) FROM テーブル名 WHERE dee = 0 AND Fee LIKE '%文字%'"; $result = mysql_query($sql,$conn); $row = mysql_fetch_row($result); とすると0、$row[0]は0となります 特にエラーの表示もなく データベースへの接続も問題ないようなのですが 原因がわかるかたいらっしゃいましたら 教えて下さい 以上よろしくお願いします

    • ベストアンサー
    • PHP
  • PHPからのLIKE検索ができません。

    こんばんわ。お世話になります。 PHPからSQLを発行してLIKE検索をしようとしているのですがうまくいきません。(Xampp MySQL) $keyword = htmlspecialchars($_POST['keyword']); mysql_real_escape_string($keyword); $sql = "select * from master where name like '%{$keyword}%'"; テーブル内の name にマッチするはずの言葉があるのにマッチしません。 ちなみに echo $sql; とSQL文を表示させてPhpMyAdminでそれを実行すると、目的の検索結果が表示されます。 いろいろ検索してみたところ、LikeをLike Binary にする方法などがありましたが、どうにもうまくいきませんでした。文字コードはフォーム側、PHP・SQLともにUTF-8です。 '%{$keyword}%'あたりの書き方が悪いのでしょうか。 お手数おかけいたしますがアドバイスの程お願いいたします。

    • ベストアンサー
    • MySQL
  • PHPとPostgreSQL接続 (スキーマ)

    いつもお世話になっております。 現在、PHP(5.3.1)とPostgreSQL(9.2)で開発をしております。 エラーが発生しており大変困っております。 こちらが発生するエラーです。 Warning: pg_exec() [function.pg-exec]: Query failed: ERROR: schema スキーマが見つからないとのことです。 そして、以下がコードとなります。 <?php // PostgreSQL Connect if (!($cn = pg_connect("host=*** port=*** user=*** password=*** dbname=***"))) { die; } // PostgreSQL Select $sql = "select * from t_test.na1"; if (!($rs = pg_exec($sql))) { die; } // PostgreSQL Get Records $ct = pg_numrows($rs); for ($i = 0; $i < $ct; $i++) { $item = pg_fetch_array($rs, $i); $txt = "${item[1]}"; } // PostgreSQL Disconnect pg_close($cn); ?> 現在のデータベースのスキーマについてですが「na1」と「public」の2つが存在しています。 試しに、na1とpublicのテーブルをまったく同じにして SQLの部分を「select * from t_test」に変更すると「public」側のテーブルが覗けます。 しかし、SQLの部分を「select * from t_test.na1」に変更すると「スキーマが見つかりません」 というエラーが発生してしまいます。 スキーマがあるにもかかわらずこのエラーがでてしまうため原因が分からず困っております。 もしお分かりになる方いらっしゃいましたら、教えていただければと思います。 何卒よろしくお願いします。

    • ベストアンサー
    • PHP
  • PostgreSQLの「*」について・・?

    こんにちわ, 今PostgreSQLを勉強しています。 たとえば, SELECT * FROM table where field ~ 'a'; とすると,tableテーブルからfieldに「a」が入っている項目を抜き出す,となります。 これに SELECT * FROM table where field LIKE '*a'; とすると,エラーが出てしまいます。 *(ワイルドカード)の使用はどのようなときに使用するのでしょうか。PostgreではLinuxとは違う使用をすると書いてあったのですが,よくわかりません。 よろしくおねがいします。

  • PHP+MySQL

    PHP4で、MySQLに接続しています。 $connには、接続IDが格納されています。 以下のスクリプトで、「エラー」が出てしまうのですが、何故でしょうか? $sql = "SELECT (User_num, User_name, User_pass) FROM User WHERE User_name='$login_name'"; if (!$result= mysql_query($sql, $conn)){ die (print ("エラー")); } SQL文を、 SELECT (User_num) FROM User WHERE User_name='$login_name' と書き換えるとうまくいきます。複数にするとエラーというのはどうしてでしょう

    • ベストアンサー
    • MySQL
  • php,postgreSQLについて

    こんにちわ。初めて投稿します。よろしくお願いします。 現在、postgreSQLで作ったテーブルのデータをつくり、検索フォームで指定した条件(この場合はお店のコード) を、指定先のページに表示させたいのです。 SQLに直接、表示させたいコード番号を入力すれば出るのですが、フォームに入力された値を変数として格納し、SQL文の中に自動にあてはめる方法がわかりません・・。 どうかよろしくお願いします。 phpは4.1です。inp_store_cdは検索フォ-ムでのinput名です。 *表示画面 <?php $conn = pg_connect ("host=localhost port= 5432 dbname=test ); if ($conn == false) { print("データベースに接続できませんでした。"); exit; } $sql = "select * from store_basic where store_cd=$_POST["inp_store_cd"]"; if (!empty($inp_store_cd)) { $sql = $sql. "and sotre_cd =" .$_POST["inp_store_cd"]; } $result = pg_exec($sql); // selectを実行 if ($result == false) { printf("SQL:\"$sql\"の実行に失敗しました。"); exit; } $rows = pg_numrows($result); // 行数を取得 $columns = pg_numfields($result); // 列数を取得 print("<table border>\n"); for ($j = 0;$j < $rows;$j++) { if ($j == 0) { print("<tr>"); for ($i = 0;$i < $columns;$i++) { $str = pg_fieldname($result,$i); // 列名の取り出し print("<th>$str</th>"); } print("</tr>\n"); } print("<tr>"); for ($i = 0;$i < $columns;$i++) { $str = pg_result($result,$j,$i); // データの取り出し print("<td>$str</td>"); } print("</tr>\n"); } pg_freeresult($result); // 検索結果の解放 print("</table>\n"); ?>

    • 締切済み
    • PHP
  • MySQL 配列もどきを条件式に

    MySQL5.5です PostgreSQLからMySQLへ移行作業をしています PostgreSQLの配列型(文字)をMySQLのBLOB型にして格納しています {"ABC", "EFG"}といった形式で格納しているのですが 以下のSQL文をMySQLで使用できる形にしたいのです SELECT * FROM table WHERE Test[1] LIKE '%%' TestがPostgreSQLでの配列になります エラーメッセージは以下の通りです db_query error. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[1] like '%%' 以下のようにAS句で適当な名称を与えて引き出せないかと考えたのですが、「Unknown column 'tst'」となり取得することはできませんでした SELECT *, REPLACE(SUBSTRING(Test, 1, LOCATE(',',Test) - 1), '{', '') AS tst FROM table WHERE tst LIKE '%%'; 何か良い方法などありましたら教えてください、よろしくお願いします

    • ベストアンサー
    • MySQL
  • '(シングルクォーテーション)の検索

    '(シングルクォーテーション)の検索 SQL Server 2005 Express Edition を使っています。 '(シングルクォーテーション)を含む文字列を検索したいのですが できずに困っています。 どのようなクエリを組むべきでしょうか? 教えてください。 よろしくお願いします。 現在は select * from テーブル名 where 列名 like '%\'%' としていますがエラーになります。

専門家に質問してみよう