問題タブ [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.
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 を使用すると、次の結果が得られました。
ありがとうございました。
php - Oracle 文字セット設定
ORACLEでadodbを使用して「Ñ」、「á」などの特殊文字に問題があります。varchar2 / varcharフィールドdeテーブルに保存すると、他の文字「¿」が保存されます。
oci8 conect (oracle に直接) で接続すると、特殊文字が正しく保存されます。
接続時に文字セットを設定するには?
($db->Connect(TNS_database, USER, PASSword));
ありがとう !!!