从查询中填充表单字段仅显示第一个单词

时间:2017-10-05 23:44:55

标签: php mysql forms

我有一个表单,用查询结果填充字段,并允许我更新任何字段。我的问题是任何给定的字段只会显示记录的该列中的第一个单词。如果我在字段中输入内容,它“会”更新记录,但只显示第一个字。这就是我所拥有的。

<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>

1 个答案:

答案 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>';