いつもご指導いただきありがとうございます。
PHP7.4.16+PostgreSQL10.13でwebシステムの勉強中です。
解決できないこと
PDOでDBへアクセスしてSELECTした結果をブラウザのテキストボックスへ出力させているのですが、データの一部しか出力されない原因を特定できずにいます。
PostgreSQL
1dotnet=>SELECT customername FROM customertable WHERE customernumber=1; 2 customername 3------------------ 4 Mr. HOGE FUGA 5(1 row)
このようにDBには正しく値が入っているのですが、テキストボックスには「Mr.」としか表示されません。
PHP
1エンコード処理部分 2<?php 3function e(?string $str, string $charset = 'UTF-8'): string{ 4 return htmlspecialchars($str, ENT_QUOTES | ENT_HTML5, $charset); 5} 6 7出力部分 8<th align="left">CUSTOMER NAME</th> 9<td><input name="CUSTOMER NAME" type="text" style="width:500px" value=<?= e($row['customername']) ?>></td> 10 11テキストボックスの表示 12Mr.
試してみたこと
エスケープ部分に問題があるか切り分けをしたく、PHPの出力部分の「e($row['customername'])」を「$row['customername']」にしてみましたが変化はありませんでした。PDOの処理部分は他でも利用しているので、DBへのアクセス方法には問題ないと思われます。
テキストボックス以外へは正常に出力されています
テキストボックスではなくテーブルへ直接出力させる部分は問題なく値が出力されています(SQLは共通です)。
PHP
1<td align="left"><?= e($row['customername']) ?></td> 2Mr. HOGE FUGA
以上からテキストボックスへ表示させる際に必要な処理があるのかもと考えていますがそれが何か、あるいは全く別の要因なのかというところで詰まっています。
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/17 02:48 編集