这是我的整个PHP代码:
<?php if(empty($_POST['selid']))
{echo "no value selected"; }
else
{
$con = mysql_connect("localhost","root","");
if(mysql_select_db("cdcol", $con))
{
$sql= "SELECT * FROM products where Id = '$_POST[selid]'";
if($result=mysql_query($sql))
{
echo "<form name=\"updaterow\" method=\"post\" action=\"dbtest.php\">";
while($row = mysql_fetch_array($result))
{
echo "Id :<input type=\"text\" name=\"ppId\" value=".$row['Id']." READONLY></input></br>";
echo "Name :<input type=\"text\" name=\"pName\" value=".$row['Name']."></input></br>";
echo "Description :<input type=\"text\" name=\"pDesc\" value=".$row['Description']."></input></br>";
echo "Unit Price :<input type=\"text\" name=\"pUP\" value=".$row['UnitPrice']."></input></br>";
echo "<input type=\"hidden\" name=\"mode\" value=\"Update\"/>";
}
echo "<input type=\"submit\" value=\"Update\">";
echo "</form>";
}
else {echo "Query ERROR";}
}
}
?>
问题这里是....如果我使用mysql_fetch_array($result)
从数据库获取的值如下:(说明是:)“我的产品”
然后; 在输入框中,它只显示“我的”这个词(或数字) 在“SPACE”(即空格)之后没有显示? 可以像上面那样输入框可以显示两个或多个单词的数据(用空格分隔)?
答案 0 :(得分:1)
html解析器无法知道&lt; input value = abc def ...&gt;表示值= abc def
。它必须将其解析为两个属性,属性value
的值为abc
,属性def
没有值。
您必须将值括在引号中,例如&lt; input value =“abc def”...&gt;
你还必须在值中编码“as&amp;”。否则html解析器会再次混淆,因为它无法知道第二个“in value =”abc“def”不是一个分隔符,而是内容。您可以使用htmspecialchars()。
e.g。
while($row = mysql_fetch_array($result))
{
printf('
Id :<input type="text" name="ppId" value="%s" READONLY></input><br>
Name :<input type="text" name="pName" value="%s"></input><br>
Description :<input type="text" name="pDesc" value="%s"></input><br>
Unit Price :<input type="text" name="pUP" value="%s"></input><br>";
<input type="hidden" name="mode" value="Update"/>',
htmlspecialchars($row['Id']),
htmlspecialchars($row['Name']),
htmlspecialchars($row['Description']),
htmlspecialchars($row['UnitPrice'])
);
}
答案 1 :(得分:1)
echo "Unit Price :<input type=\"text\" name=\"pUP\" value=\"".$row['UnitPrice']."\"></input></br>";
您需要将value
括在引号中。