php - 如何用 MySQL 数据填充 HTML 文本框

标签 php mysql

我正在尝试制作更新表单。更新部分已经在工作,但如果我要放置一个查看按钮,这样用户就不会为了更新而重新输入数据会更好。

我正在处理这段代码,在 html 表单中有一个按钮,其中包含以下代码作为其表单操作。它的工作是根据输入的电话号码用适当的数据填充文本框。

<?php
    $con = mysql_connect("localhost","root","");
    if (!$con)
    {
        die('Could not connect: ' . mysql_error());
    }
    mysql_select_db("hospital", $con);

    $result = mysql_query("SELECT * FROM t2 WHERE TELNUM='{$_POST["telnum"]}'");

    while ($row = mysql_fetch_array($result))
    {

    <form>
        <input  name="lname" type="text"<?php echo $result["lname"];">
    </form>
?>

我的代码有什么问题?我还是 PHP 的初学者。

最佳答案

您的 HTML 看起来不正确;文本输入字段的值由 value 属性指定,例如

<input name="lname" type="text" value="<?php echo( htmlspecialchars( $row['lname'] ) ); ?>" />

行数据将出现在 $row 散列中; $result 只是指向 MySQL 结果缓冲区的指针。此外,您在 echo 语句之后缺少一个 ?> 标记,并且最后的 ?> 放错了位置。 while 循环似乎也没有右括号

请注意使用 htmlspecialchars() 转义文本中的 HTML 实体。这将防止数据库中的文本无意中关闭标签并在您的 HTML 中喷出垃圾(并防止用户的恶意输入产生任何影响)。

总的来说,正确的解决方案可能类似于:

<?php
$con = mysql_connect( 'localhost', 'root', '' );
if( !$con ) {
    die( 'Could not connect: ' . mysql_error() );
} else {
    mysql_select_db( 'hospital', $con );
    $result = mysql_query( "SELECT * FROM t2 WHERE TELNUM='{$_POST["telnum"]}'" );
    while( $row = mysql_fetch_array( $result ) ) {
        ?>
        <form>
            <input name="lname" type="text" value="<?php echo( htmlspecialchars( $row['lname'] ) ); ?>" />
        </form>
        <?php
    }
}
?>

最后,不要再猜测你,而是要小心将用户提供的数据(如 $_GET$_POST)中的任意值插入到 SQL 查询中 -恶意用户可以使用它来故意构建您不想执行的查询,或者非恶意用户可以相当合理地提供无意中破坏 SQL 的数据,从而导致意外错误(或者再次出现某种形式的未知破坏行为)。看看 SQL injection page在 PHP 网站上作为了解更多相关信息的良好起点。

关于php - 如何用 MySQL 数据填充 HTML 文本框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2215377/

相关文章:

javascript - 无需 DNS 调用即可加载 Javascript 和 CSS 文件

php - 存储的数据库网址不回显图像

php 从空值创建默认对象?

javascript - Laravel 无法正常工作

MySQL JOIN查询索引优化

php - 查询;单击以显示 html 内容和倒计时,然后显示其他内容

javascript - 将 php 变量传递给 jquery 脚本不起作用

javascript - PHP/HTML 提交后记住所选值 - 从 MySQL 填充的选项

php - 将 MySQL 数据从一个表 move 到另一个表跳过重复(或覆盖)

MySQL 5.7 - 错误 sql_mode=only_full_group_by