0

MySQLからデータを取得し、その値をテキストフィールドに入れようとした後、理由を尋ねたいだけです:

$contractorx = $row['Contractor'];

$contractorxの値は正しい "Jose Amadeo Alonzo" です。しかし、このコードを使用して HTML テキスト フィールドに表示しようとすると、次のようになります。

echo "<p>Contractor: <input type=\"text\" name=\"mdu\" readonly value=$contractorx></p>";

フィールドに表示されるテキストは「Jose」のみです。これがなぜ起こるのか、そしてそれを解決する方法を特定するのを手伝ってくれる人はいますか?

4

5 に答える 5

4

結果は次のようになるためです。

<input type="text" name="mdu" readonly value=Foo Bar Baz>

この属性valueには 1 つの値がありFoo、その後にさらに 2 つの属性Barとが続きますBaz値自体に引用符が含まれている場合は、引用符とHTMLを使用して値を正しくエスケープする必要があります。

printf('<input type="text" name="mdu" readonly value="%s">',
       htmlspecialchars($contractorx, ENT_COMPAT));

結果は次のようになります。

<input type="text" name="mdu" readonly value="Foo Bar Baz">
于 2013-05-27T05:55:25.633 に答える
3

「値」に引用符を追加します

value=\"$contractorx\"
于 2013-05-27T05:54:16.347 に答える
2

htmlspecialchars()を使用します。

$contractorx = htmlspecialchars($row['Contractor']);

引用符を忘れないでください:

echo "<p>Contractor: <input type=\"text\" name=\"mdu\" readonly value=\"$contractorx\"></p>";

または一重引用符を使用します。

echo '<p>Contractor: <input type="text" name="mdu" readonly value="'.$contractorx.'"></p>';
于 2013-05-27T06:02:12.970 に答える
0
echo sprintf("<p>Contractor: <input type='text' name='mdu' readonly value='%s' /></p>",  $contractorx);
于 2013-05-27T05:54:25.053 に答える
0
echo '<p>Contractor: <input type="text" name="mdu" readonly value="'.$contractorx.'"</p>';
于 2013-05-27T06:02:38.623 に答える