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

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

最佳答案

问题是因为您没有将值括在双引号中,所以您的 html 生成为 <input name=john smith>而不是<input name="john smith"> ,这将包装输入字段的整个值,然后变得有效。

因此,因为您使用双引号,所以需要使用 \" ...

value=" . $row['Name'] . "

...应该变成...

value=\"" . $row['Name'] . "\"

在浏览器中生成 PHP(而不仅仅是完整的 dom)后,遇到问题时,您应该始终检查源代码的有效性。

我也会考虑逃避你的值(value)观。

完整解决方案:

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

关于php - 从查询填充表单字段仅显示第一个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46596313/

相关文章:

php - 使用 PHP 向 SQL 表添加数据以及如何显示错误

PHP cURL 删除哈希标记后的片段

php - Lumen 框架未命中 Vscode 上的断点

php - 使用 PHP 从多个数据库表中获取数据作为数组

css - MailChimp 表单和按钮在同一行

swift - 当行包含按钮时禁用表单行选择

php - 无法在同一页面上设置 PHP cookie

mysql - 为什么我从 Django 查询中得到这个 sql 语法错误?

php - Ajax结果返回mysql

jquery - 如果确认为 true,则调用另一个 jQuery 函数