2013-05-27 27 views
0

我只是想從MySQL得到一個數據,並試圖把它在一個文本框的值後問爲什麼:PHP文本字段值顯示不完整的數據,僅1個字

$contractorx = $row['Contractor']; 

價值的$ contractorx是「Jose Amadeo Alonzo」,這是正確的。但是,當我嘗試使用此代碼在HTML文本字段中顯示它時:

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

顯示在該字段上的文本僅爲「Jose」。任何人都可以請幫助確定爲什麼發生這種情況以及如何解決它?

+2

採取在正在輸出的HTML好辛苦的樣子。 – deceze

+1

您需要引號,我猜... – sashkello

+1

a)您不會在值屬性周圍加引號。 b)你不是逃避輸出。 c)你確定這個變量是否真的擁有你認爲它的價值? – GordonM

回答

3

添加引號的 「價值」

value=\"$contractorx\" 
+1

你*需要* HTML轉義呢! – deceze

+0

無論如何都應該在將數據放入數據庫之前完成;] – 0xAli

+1

不,它不應該。數據庫中的數據與HTML無關。你只有HTML輸出*轉換成* HTML! – deceze

0
echo sprintf("<p>Contractor: <input type='text' name='mdu' readonly value='%s' /></p>", $contractorx); 
+0

如果您要連接變量,那麼爲該字符串添加雙引號沒有意義。 – BLaZuRE

+0

@BLaZuRE我不明白你,但這條線很好。你可以試試它。沒有最終用戶許可證需要。 – zkanoca

+0

對不起,錯誤的答案。我在智能手機上。 – BLaZuRE

4

因爲結果是這樣的:

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

屬性value具有單一值Foo,其次是兩個屬性BarBaz。你需要使用引號 HTML正確逃生的價值,它本身就應該包含引號:

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

那麼結果將正確的樣子:

<input type="text" name="mdu" readonly value="Foo Bar Baz"> 
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>'; 
0
echo '<p>Contractor: <input type="text" name="mdu" readonly value="'.$contractorx.'"</p>'; 
相關問題