問題タブ [adodb-php]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
90 参照

php - アクセントを含む列名は選択できません

問題

私は実際に Symfony 5 を使用した新しい Web サイト プロジェクトに参加しています。すべての製品の詳細が保存されている履歴データベースにアクセスする必要があるため、odbc ドライバーを使用できるように AdoDb を使用する必要があります (教義では使用が許可されていないため)。それ)。

アクセントのあるフィールドを選択しようとすると、クエリが失敗し、S0022エラー コードがスローされます。完全なエラー メッセージは次のとおりです。 "[Simba][SQLEngine] (31750) Column not found: ar1_händlerpreis"

ar1_händlerpreis問題と思われる「ä」文字が含まれていることを確認してください。

私がすでに試したこと

これがクエリのコードです。ar1_händlerpreis「Prepare」関数の最初のパラメーターに存在する を見てください。

クエリ文字列のフィールド ar1_händlerpreis を次のように編集しようとしました。

  • ar1_h[ä]ndlerpreis (ここで述べたように)
  • `ar1_händlerpreis` (バックスティックで囲む ... 一部のフィールドをエスケープする必要があることがわかっているため)
  • || ar1_handlerpreis || '' (ここで説明しているように、列名を式に変換している可能性がありますが、エラーは発生しません)
  • ar1_händlerpreis + 0 (前のものと同じ、式に変換されている可能性があります)

また、データベースにアクセスするためのエンコーディング文字を変更しようとしました:

  • $this->_db->setConnectionParameter('CharacterSet','UTF-8');(ここで説明するように)

しかし、何もしません...

いくつかのコード

私が何か間違ったことをしたかどうかを確認するためのコードをさらに提供します。

これは、履歴データベースに接続する必要があるときに使用する ADOdbConnection サービスです。ほとんどの場合、私は Web サイト固有のデータベースに Doctrine を使用しています。

データベースへの接続を行い、正常に機能します。

次に、これは製品 (記事) テーブルの DAL です。

このコードは次の結果を表示します。

ArticleDal.php の 37 行目: "SELECT ar1_artikelnummer, ar2_mwststeuerschl, ar1_bestand, ar1_klassifizierung, ar1_bezeichnung3, ar1_apothekenpreis, ar1_händlerpreis + 0 AS apreis FROM artikeldaten WHERE ar1_artikelnummer IN(?,?,?,?,?,?,? ?,?,?,?,?,?,?,?,?,?,?)」

ArticleDal.php の 39 行目: "S0022"

ArticleDal.php の 40 行目: "[Simba][SQLEngine] (31750) 列が見つかりません: ar1_händlerpreis"

41 行目の ArticleDal.php: false

そして、何を返すかの例がありますSELECT *(360列あるため、切り捨てます...):

フィールドの前にあるアクセント付きの小さな「b」は奇妙です (ar1_händlerpreis と ar1_preislistenänder の場合)。dump()は Symfony フレームワークのデバッグ関数です。

ダンプの代わりに var_dump を使用すると、次の結果が得られました。

ありがとうございました。

0 投票する
1 に答える
34 参照

php - Oracle 文字セット設定

ORACLEでadodbを使用して「Ñ」、「á」などの特殊文字に問題があります。varchar2 / varcharフィールドdeテーブルに保存すると、他の文字「¿」が保存されます。

oci8 conect (oracle に直接) で接続すると、特殊文字が正しく保存されます。

接続時に文字セットを設定するには?

($db->Connect(TNS_database, USER, PASSword));

ありがとう !!!