2017-12-04 15 views
0

私は/ 400としてDB2テーブルで作業しています。私はそれに対して基本的なクエリを実行しようとしているが、テーブル名には.が含まれています。たとえば、my.tableはテーブル名です。テーブル名に特殊文字を含むIBM DB2テーブルにアクセスするPDO_ODBC

問題は、PDOがデータベース名myをテーブル名tableで指定していると考えていることです。したがって、準備されたステートメントは失敗しており、テーブルtableはデータベースmyに存在しません。テーブル名の変更はオプションではありません。

テーブル名のピリオドを処理する最も良い方法は何ですか?私はその期間をエスケープしようとしましたが、何の成功もありませんでした。

$sql= "select * from '[THE.TABLE]'"; 
     try { 
      $statement = $this->db->query($sql); 
      $results = $statement->execute(); 
      foreach ($results as $result) { 
       print_r($result); 
      } 
      exit; 
     } 
     catch (\Exception $e) 
     { 
      //log issue and other stuff 
     } 

アプリケーションは、Zend Frameworkの中で実行されている、私は修正立つ2.

+0

テーブル名の前後にバッククォートを入れてみてください。 '\' my.table \ '' – aynber

+1

[MySQLでは一重引用符、二重引用符、バッククォートを使用する場合](https://stackoverflow.com/questions/11321491)/when-to-use-single-quotes-double-quotes-and-backticks-in-mysql) – aynber

+0

バックティックを試しました。それはうまくいかなかった。 – Knight

答えて

0

は、ここに私の問題のいくつかのサンプルコードです。コメントに記載されているように、解決策は二重引用符を正しくエスケープすることでした。答えは、MySQL向けの質問に記載されています。

関連する問題