在输入/回显行中标记PHP表单字段

在输入/回显行中标记PHP表单字段,php,html,mysql,Php,Html,Mysql,我的网站上有这个代码 我想知道如何正确地格式化表单,在我回显数据库行的同一行中为字段命名,以便清楚地知道是什么。 例如,我尝试: <input value="<?php echo "ID: " . $row["id"]; ?>"><br> 您可以做几件事: 对于您的初始查询 $myusername = $_SESSION['myusername']; $query = mysql_query("SELECT id, username, password, e

我的网站上有这个代码

我想知道如何正确地格式化表单,在我回显数据库行的同一行中为字段命名,以便清楚地知道是什么。 例如,我尝试:

<input value="<?php echo "ID: " . $row["id"]; ?>"><br>

您可以做几件事:

对于您的初始查询

$myusername = $_SESSION['myusername'];
$query = mysql_query("SELECT id, username, password, email, name, aim, admin, time,          phone, address FROM users WHERE username = '$myusername' ");
这并不适用于生产环境,但因为您正在学习,所以最好将事物分开,以便更好地了解正在发生的事情

如果用户编辑他们的信息(更新数据库),您可以在表单中创建一个按钮,method=post,action=database.php?action=edit。在database.php中

if(isset($_GET['action']) == 'edit') { 

// set all posted values to variables
// run the update query... UPDATE ... WHERE username = '$myusername'

} 
if(isset($_GET['action']) == 'delete') { 

// run the delete query... DELETE FROM $tbl WHERE username = '$myusername'

} 
对于delete,使用另一个按钮创建另一个表单,类似地:action=database.php?action=delete。在database.php中

if(isset($_GET['action']) == 'edit') { 

// set all posted values to variables
// run the update query... UPDATE ... WHERE username = '$myusername'

} 
if(isset($_GET['action']) == 'delete') { 

// run the delete query... DELETE FROM $tbl WHERE username = '$myusername'

} 

您不必将所有内容都放在同一行中,行数越少并不总是越好。
关于输入字段,您的代码应该类似于:

<label>ID</label>
<input type="text" name="id" value="<?php echo $row['id']; ?>">
请注意,在mysql查询中,字段和表是在严重重音(`)之间写入的,值是在单引号(')之间写入的

现在回到你的代码。如果所有输入字段都是相同的类型,比如说
type=“text”
,那么您可以这样做:

while ($row = mysql_fetch_array($query)) {
    foreach ($row as $key => $value) {
        echo
       "<div>
            <label>{ucfirst($key)}</label>
            <input type="text" name="{$key}" value="{$value}">
        </div>";
    }
}
然后检查
isset()

并始终记住清理用户输入:

function sanitize($str) {
    return mysql_real_escape_string(htmlspecialchars(trim(stripslashes($str))));
}
而不是一个接一个地消毒,你可以:

$data = array_map('sanitize', $_POST);

如果您想查看从查询中输出的结果是什么,请执行var_dump($query);在原始$查询后的行上。好的做法是将会话值(以及cookies')设置为变量,因此$myusername=$\u session['myusername'];有了它,你可以做一个更干净的查询,而不必。。。用户名=“$\u会话['myusername']”。但是,用户名=“$myusername”我在上面的网站链接上有这个结果。对不起,误解了你。你的头衔对我来说毫无意义。我想我现在明白了。编辑:你的页面也没有加载。关于变量的观点很好。我要试试看。我正在寻找这种类型的答案,编码的捷径。:-)它没有加载,因为你没有登录到网站,所以会话对你不起作用,但我在这里看到了一切。我有这个删除功能和更新,我想知道我是否可以在同一行中进行,比如更改表单输入属性?我更关心的是如何在同一行中为表单文本字段添加标签,我回显行。有什么想法吗?看看上面,我试过的。我同意你的看法,我的标题很混乱。你可以有一个复选框“删除我的个人资料”,检查它是否作为已选中的服务器端传递,如果已选中则将其删除。
function sanitize($str) {
    return mysql_real_escape_string(htmlspecialchars(trim(stripslashes($str))));
}
$data = array_map('sanitize', $_POST);