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

Yoshiaki Yanagimoto yanagimoto @ ask-art.jp
2009年 10月 26日 (月) 15:35:26 JST


柳本です。

uidの文字列が0から始まっているので
oracleが8進数と解釈して暗黙キャストしてしまったのでは?

kona さんは書きました:
> こんにちは。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 mailing list  PHP-users @ php.gr.jp
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://oldwww.php.gr.jp/php/novice.php3
> 



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