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

use*_*269 2 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>
?>
Run Code Online (Sandbox Code Playgroud)

我的代码出了什么问题?我还是PHP的初学者.

Rob*_*Rob 8

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

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

行数据将出现在$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
    }
}
?>
Run Code Online (Sandbox Code Playgroud)

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


mr-*_*-sk 5

它应该是:

<input  name="lname" type="text"<?php echo $row['lname'];
Run Code Online (Sandbox Code Playgroud)

<input  name="lname" type="text"<?php echo $result['lname'];
Run Code Online (Sandbox Code Playgroud)

$ result就是 - mysql_query()调用的布尔结果.

$ row是循环每次迭代的实际数据.