[PHP-users 34816] Re: OracleのDBに対するSELECT文の書き方について

kona uto-s @ ymail.plala.or.jp
2009年 10月 26日 (月) 22:07:15 JST


森さん,柳本さん,山本さん,久保さん

konaです。皆さんご回答ありがとうございました。

森さんがメール下さった
> 単純に一致するUIDが無いだけでは?確実に存在する値で検索してみて下さい。
につきましては、確実に存在するIDで検索してみたのですが、
うまく検索にヒットしてくれません。

$sql をecho出力した結果は下記の通りです。

$uid = '0123456';
$con = OCILogon("id","password","dbserver:1521/inst");
$sql = "SELECT * FROM TABLENAME WHERE UID = '$uid'";
echo $sql;

上記の結果、$sql は、
SELECT * FROM TABLENAME WHERE UID = '0123456'
と表示されています。

柳本さんが述べられた通り、
$uid が 0で始まらない数字の場合 "123456" でも
うまく検索にヒットしてくれません。
SELECT * FROM TABLENAME WHERE UID = '123456'

また山本さんのメールの通り '$uid' のシングルコーテーションを
取っても変化なしでした。
SELECT * FROM TABLENAME WHERE UID = $uid
↓
SELECT * FROM TABLENAME WHERE UID = 123456

久保さんのご回答の件ですが、WHERE句の検索条件をメールアドレス
等に変えて別なフィールドを検索すると、問題なく検索できますので
"id"と"password"が間違っているという事はないと思います。

ちなみに、OracleDBの UID フィールドは VARCHAR2 ですが
$uidのデータ型は文字列です。

メールアドレスでは検索できるのに、数字の文字列で検索できないのか
不思議です。


----- Original Message ----- 
From: "kona" <uto-s @ ymail.plala.or.jp>
To: <php-users @ php.gr.jp>
Sent: Sunday, October 25, 2009 12:04 AM
Subject: OracleのDBに対するSELECT文の書き方について


> こんにちは。konaと申します。
>
> 最近、PHPとOracleの勉強し始めたものです。
>
> 下記の通り、PHPからOracleのデータベースをSELECT文で参照しようと
> 試みておりますが、属性がVARCHAR2の数値が納められたフィールドで、
> WHERE句の条件を数値で検索しようとすると、
> 期待した値が取得できず困っています。
> ($row['NAME'] や $row['MAIL']は何も表示されません)
>
> <?php
> $uid = '0123456';
> $con = OCILogon("id","password","dbserver:1521/inst");
> $stmt = OCIParse($con, "SELECT * FROM TABLENAME WHERE UID = '$uid'");
> OCIExecute($stmt);
>
> while ($row = oci_fetch_array($stmt, OCI_ASSOC)) {
>  echo $row['NAME'];
>  echo $row['MAIL'];
> }
> ?>
>
>
> 但し、別なフィールド(属性がVARCHAR2のメールアドレスが納められた
> フィールド)では、WHERE句をメールアドレスで検索すると、
> 問題なく値が取得できます。
> ($row['NAME'] には氏名、 $row['MAIL']にはメールアドレスが表示されます)
>
> <?php
> $mail = 'aaaa @ bbb.ccc.co.jp';
> $con = OCILogon("id","password","dbserver:1521/inst");
> $stmt = OCIParse($con, "SELECT * FROM TABLENAME WHERE MAIL = '$mail'");
> OCIExecute($stmt);
>
> while ($row = oci_fetch_array($stmt, OCI_ASSOC)) {
>  echo $row['NAME'];
>  echo $row['MAIL'];
> }
> ?>
>
> SELECT文のWHERE句で数値の条件を設定する際の注意点がありましたら
> 解決方法も合わせてアドバイス頂けますと幸いです。
>
> よろしくお願い致します。




PHP-users メーリングリストの案内