前提・実現したいこと
社内で VB.NET で作られたシステムを使用しており、
データベースは Oracle を使用しています。
今回 Windows を使用していない部署でもデータの検索などができるよう、
php で新しいシステムを作ることになりました。
発生している問題・エラーメッセージ
Oracle への接続時やSQL実行時にエラーは出ないのですが、
select すると false が返ってきてしまいます。
※vb.net の方で該当のデータが存在するのは確認済み
該当のソースコード
php
1 try { 2 $dsn = 'oci:dbname=//IPアドレス:1521/データベース'; 3 $options = [ 4 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 5 PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC 6 ]; 7 $link = new PDO($dsn, 'ユーザー名', 'パスワード', $options); 8 $sql = "SELECT * FROM テーブル名 WHERE 'コード' = :code"; 9 $stmt = $link->prepare($sql); 10 $stmt->bindValue(':code', 100); 11 $stmt->execute(); 12 $rows = $stmt->fetch(); 13 if($rows !== false) { 14 var_dump($rows); 15 } else { 16 echo '取得失敗'; 17 } 18 } catch(PDOException $e) { 19 header('Content-Type: text/plain; charset=UTF-8', true, 500); 20 echo 'エラー:'.$e->getMessage().PHP_EOL; 21 exit(); 22 }
試したこと
上記ソースはユーザーからの入力を想定しているため
プリペアドステートメントを使用していますが、
テスト的に PDO::query メソッドを使用して select を実行してみましたが、
false が返って来ました。
11/7追記
一番データ量の少ないテーブルで「SELECT * FROM テーブル名」を実行してみたところ値が帰って来ました。
しかし、日本語のカラム名が含まれると false が返ってくるようになります。
補足情報(FW/ツールのバージョンなど)
環境は
Windows 2008 R2
IIS 7.5
php 7.3
Oracle 11g
になります。
よろしくお願いいたします。
回答4件
あなたの回答
tips
プレビュー