我只想问一下为什么从MySQL获取数据并尝试将其值放在文本字段上之后:
$contractorx = $row['Contractor'];
$ contractorx 的价值是“Jose Amadeo Alonzo”,这是正确的。但是当我尝试使用以下代码在HTML文本字段中显示它时:
echo "<p>Contractor: <input type=\"text\" name=\"mdu\" readonly value=$contractorx></p>";
该字段上显示的文字仅为“Jose”。任何人都可以帮助确定为什么会发生这种情况以及如何解决它?
答案 0 :(得分:4)
因为结果如下所示:
<input type="text" name="mdu" readonly value=Foo Bar Baz>
属性value
具有单个值Foo
,后跟另外两个属性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">
答案 1 :(得分:3)
在“值”
中添加引号value=\"$contractorx\"
答案 2 :(得分: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>';
答案 3 :(得分:0)
echo sprintf("<p>Contractor: <input type='text' name='mdu' readonly value='%s' /></p>", $contractorx);
答案 4 :(得分:0)
echo '<p>Contractor: <input type="text" name="mdu" readonly value="'.$contractorx.'"</p>';