我正在尝试制作更新表单。更新部分已经在工作,但如果我要放置一个查看按钮,这样用户就不会为了更新而重新输入数据会更好。
我正在处理这段代码,在 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/