|
View:
New views
11 Messages
—
Rating Filter:
Alert me
|
|
|
[PHP-users 34811] 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@...'; $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@... http://ml.php.gr.jp/mailman/listinfo/php-users PHP初心者のためのページ - 質問する前にはこちらをお読みください http://oldwww.php.gr.jp/php/novice.php3 |
|
|
[PHP-users 34812] Re: OracleのDBに対するSELECT文の書き方についてOn Sun, 25 Oct 2009 00:04:17 +0900
"kona" <uto-s@...> wrote: > 下記の通り、PHPからOracleのデータベースをSELECT文で参照しようと > 試みておりますが、属性がVARCHAR2の数値が納められたフィールドで、 > WHERE句の条件を数値で検索しようとすると、 > 期待した値が取得できず困っています。 > ($row['NAME'] や $row['MAIL']は何も表示されません) 単純に一致するUIDが無いだけでは?確実に存在する値で検索してみて下さい。 /* 森 洋二郎(Mori Yojiro) */ /* Booby Trap Systems */ /* yojiro-m@... */ /* http://www.boobytrap.ne.jp/ */ _______________________________________________ PHP-users mailing list PHP-users@... http://ml.php.gr.jp/mailman/listinfo/php-users PHP初心者のためのページ - 質問する前にはこちらをお読みください http://oldwww.php.gr.jp/php/novice.php3 |
|
|
[PHP-users 34813] Re: OracleのDBに対するSELECT文の書き方について久保です。
Oracleは使ったことはありませんが、他のRDBを使った経験から。 <?php $uid = '0123456'; $con = OCILogon("id","password","dbserver:1521/inst"); $sql = "SELECT * FROM TABLENAME WHERE UID = '$uid'"; echo $sql; ?> まずは"id"と"password"でOracleにログインできますでしょうか。ログインでき た場合、表示されたsql文をターミナルで実行した場合はどんな結果になります か? その結果によってある程度問題が切り分けられると思います。 _______________________________________________ PHP-users mailing list PHP-users@... http://ml.php.gr.jp/mailman/listinfo/php-users PHP初心者のためのページ - 質問する前にはこちらをお読みください http://oldwww.php.gr.jp/php/novice.php3 |
|
|
[PHP-users 34814] Re: OracleのDBに対するSELECT文の書き方について柳本です。
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@...'; > $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@... > http://ml.php.gr.jp/mailman/listinfo/php-users > PHP初心者のためのページ - 質問する前にはこちらをお読みください > http://oldwww.php.gr.jp/php/novice.php3 > _______________________________________________ PHP-users mailing list PHP-users@... http://ml.php.gr.jp/mailman/listinfo/php-users PHP初心者のためのページ - 質問する前にはこちらをお読みください http://oldwww.php.gr.jp/php/novice.php3 |
|
|
[PHP-users 34815] Re: OracleのDBに対するSELECT文の書き方について山本@ジェネシスです。
On Sun, 25 Oct 2009 00:04:17 +0900 "kona" <uto-s@...> さん wrote: > $stmt = OCIParse($con, "SELECT * FROM TABLENAME WHERE UID = '$uid'"); '$uid' のシングルコーテーションを取ったらどうなりますか? UID = $uid oracleって結構、数値・文字でも、 シングルコーテーションの有り・無しがアバウトで、 数値に '' を付けてもパースエラーはでないのですが、 結果、'0123456' を探して、マッチしてないのではないかと思いますが。 postgreSQLは、数値にシングルコーテーションを付けるとエラー?ってなってた気が。 -- kazu yamamoto <kazu@...> http://team.genesis.ne.jp/ Freude am Fahren _______________________________________________ PHP-users mailing list PHP-users@... http://ml.php.gr.jp/mailman/listinfo/php-users PHP初心者のためのページ - 質問する前にはこちらをお読みください http://oldwww.php.gr.jp/php/novice.php3 |
|
|
[PHP-users 34816] Re: OracleのDBに対するSELECT文の書き方について森さん,柳本さん,山本さん,久保さん
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@...> To: <php-users@...> 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@...'; > $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@... http://ml.php.gr.jp/mailman/listinfo/php-users PHP初心者のためのページ - 質問する前にはこちらをお読みください http://oldwww.php.gr.jp/php/novice.php3 |
|
|
[PHP-users 34817] Re: OracleのDBに対するSELECT文の書き方についてOn Mon, 26 Oct 2009 22:07:15 +0900
"kona" <uto-s@...> wrote: > SELECT * FROM TABLENAME WHERE UID = '0123456' そのSQLをSQL*Plusで実行するとどうなりますか? /* 森 洋二郎(Mori Yojiro) */ /* Booby Trap Systems */ /* yojiro-m@... */ /* http://www.boobytrap.ne.jp/ */ _______________________________________________ PHP-users mailing list PHP-users@... http://ml.php.gr.jp/mailman/listinfo/php-users PHP初心者のためのページ - 質問する前にはこちらをお読みください http://oldwww.php.gr.jp/php/novice.php3 |
|
|
[PHP-users 34818] Re: OracleのDBに対するSELECT文の書き方についてyamamoto です。
昔よく Oracle を使用していました。 > ちなみに、OracleDBの UID フィールドは VARCHAR2 ですが > $uidのデータ型は文字列です。 > > メールアドレスでは検索できるのに、数字の文字列で検索できないのか > 不思議です。 手元に確認環境がないので記憶で回答しますが、 Oracle の CHAR 型のフィールドは固定長なので、UID が CHAR(8) などだった場合、 '0123456' というデータは、'0123456 ' という形で格納されていたような気がします。 UID のデータサイズはいくつでしょうか。 > ----- Original Message ----- From: "kona" <uto-s@...> > To: <php-users@...> > 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@...'; >> $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@... > http://ml.php.gr.jp/mailman/listinfo/php-users > PHP初心者のためのページ - 質問する前にはこちらをお読みください > http://oldwww.php.gr.jp/php/novice.php3 > -- -<Thinkmeta>------------------------------------------ <?xml version="1.0" encoding="ISO-2022-JP" ?> <signature> <name>山本 正浩[Masahiro Yamamoto]</name> <mail>yamamoto@...</mail> <web>http://www.thinkmeta.jp/</web> </signature> _______________________________________________ PHP-users mailing list PHP-users@... http://ml.php.gr.jp/mailman/listinfo/php-users PHP初心者のためのページ - 質問する前にはこちらをお読みください http://oldwww.php.gr.jp/php/novice.php3 |
|
|
[PHP-users 34819] Re: OracleのDBに対するSELECT文の書き方について上條@自宅と申します。
konaさん、お世話になります。 > $uid = '0123456'; > $con = OCILogon("id","password","dbserver:1521/inst"); > $sql = "SELECT * FROM TABLENAME WHERE UID = '$uid'"; > echo $sql; > ちなみに、OracleDBの UID フィールドは VARCHAR2 ですが > $uidのデータ型は文字列です。 TABLENAMEテーブルのCREATE TABLEのsql文を公開して下さい。 以上、よろしくお願いいたします。 ● 作成者:上條 靖芳 e-mail:yasuyoshi_kamijo@... ● blog:http://blogs.dion.ne.jp/yasuyoshi/ on DELL Vostro 1520 Genuine Intel(R) CPU 2.00GHz WinXP SP3 Becky! 2.50.07_ja + VB2008 EE + IE8.0 + Oracle11gR1(11.1.0.7) _______________________________________________ PHP-users mailing list PHP-users@... http://ml.php.gr.jp/mailman/listinfo/php-users PHP初心者のためのページ - 質問する前にはこちらをお読みください http://oldwww.php.gr.jp/php/novice.php3 |
|
|
[PHP-users 34820] Re: OracleのDBに対するSELECT文の書き方についてこんばんは。はじめまして。
他の方が返信されていますがまずOracleでの問題なのかPHPでの問題なのか切り 分ける必要があると思います。 あと数値のUIDをOracle上のVARCHAR2フィールドに格納する際"TO_CHAR"関数を使 われていたら先頭に符号の1byteが付加されて'0123456'ではなく' 0123456'で格 納されている可能性はないでしょうか。 On Sun, 25 Oct 2009 00:04:17 +0900 "kona" <uto-s@...> wrote: ------------------------- 山根貴光 Yamane, Takamitsu draftline.jp@... ------------------------- _______________________________________________ PHP-users mailing list PHP-users@... http://ml.php.gr.jp/mailman/listinfo/php-users PHP初心者のためのページ - 質問する前にはこちらをお読みください http://oldwww.php.gr.jp/php/novice.php3 |
|
|
[PHP-users 34821] Re: OracleのDBに対するSELECT文の書き方について聖と申します。
kona さんはじめまして、夜分にすみません。 Yamane さんの指摘される内容と同じですが、 数字以外の空白などの値がトリムされずに格納されているのでは?と感じました。 $stmt = OCIParse($con, "SELECT * FROM TABLENAME WHERE UID LIKE '%$uid%'"); などであいまいに検索してみてはいかがでしょうか。 > あと数値のUIDをOracle上のVARCHAR2フィールドに格納する際"TO_CHAR"関数を使 > われていたら先頭に符号の1byteが付加されて'0123456'ではなく' 0123456'で格 > 納されている可能性はないでしょうか。 聖 _______________________________________________ PHP-users mailing list PHP-users@... http://ml.php.gr.jp/mailman/listinfo/php-users PHP初心者のためのページ - 質問する前にはこちらをお読みください http://oldwww.php.gr.jp/php/novice.php3 |
| Free embeddable forum powered by Nabble | Forum Help |