我有一个表单,用查询结果填充字段,并允许我更新任何字段。我的问题是任何给定的字段只会显示记录的该列中的第一个单词。如果我在字段中输入内容,它“会”更新记录,但只显示第一个字。这就是我所拥有的。
<html>
<body>
<?php
$con = mysql_connect("localhost","db_username","db_pw");
{
}
mysql_select_db("db_name",$con);
if (isset($_POST['update'])){
$UpdateQuery = "UPDATE db_table SET Name='$_POST[Name]', Email='$_POST[Email]', ID='$_POST[ID]', Notes='$_POST[Notes]' WHERE ID='$_POST[Hidden]'";
mysql_query($UpdateQuery, $con);
};
$sql = "SELECT * FROM db_table ";
$mydata = mysql_query($sql,$con);
echo "<table border='1'>
<tr>
<th>Name</th>
<th>Email</th>
<th>Member Number</th>
<th>Notes</th>
</tr>";
while($row = mysql_fetch_array($mydata))
{
echo "<form action=updaterec.php method=post>";
echo "<tr>";
echo "<td>" . "<input type=text name=Name value=" . $row['Name'] . " ></td>";
echo "<td>" . "<input type=text name=Email value=" . $row['Email'] . " ></td>";
echo "<td>" . "<input type=text name=ID value=" . $row['ID'] . " ></td>";
echo "<td>" . "<input type=text name=Notes value=" . $row['Notes'] . " ></td>";
echo "<td>" . "<input type=hidden name=Hidden value=" . $row['ID'] . " ></td>";
echo "<td>" . "<input type=submit name=update value=update" . " ></td>";
echo "</form>";
echo "</tr>";
}
echo "</table>";
mysqli_close($con);
?>
</body>
</html>
答案 0 :(得分:0)
问题是因为您没有将值包装在双引号中,您的html生成为<input name=john smith>
而不是<input name="john smith">
,这将包装输入字段的整个值,然后变得有效。
因此,因为您使用的是双引号,所以需要使用\"
...
value=" . $row['Name'] . "
......应该成为......
value=\"" . $row['Name'] . "\"
在出现问题后,在浏览器中生成PHP(而不仅仅是已完成的dom)后,您应该始终查看源代码的有效性。
我也会考虑逃避你的价值观。
完整解决方案:
while($row = mysql_fetch_array($mydata))
{
echo "<form action=updaterec.php method=post>";
echo "<tr>";
echo "<td><input type=text name=Name value=\"" . htmlentities($row['Name']) . "\" ></td>";
echo "<td><input type=text name=Email value=\"" . htmlentities($row['Email']) . "\" ></td>";
echo "<td><input type=text name=ID value=\"" . htmlentities($row['ID']) . "\" ></td>";
echo "<td><input type=text name=Notes value=\"" . htmlentities($row['Notes']) . "\" ></td>";
echo "<td><input type=hidden name=Hidden value=\"" . htmlentities($row['ID']) . "\" ></td>";
echo "<td><input type=submit name=update value=\"update\" ></td>";
echo "</form>";
echo "</tr>";
}
额外:此外,当您不需要解析变量时,单引号有助于避免混淆。
echo '<td><input type="text" name="Name" value="' . htmlentities($row['Name']) . '" ></td>';