当数据来自多个表时,如何使用PHP和MYSQL在表单中填充字段?

时间:2012-03-14 02:35:55

标签: php mysql forms

我正在开发一个项目,我希望用户输入他/她的用户名和密码,如果是正确的,请在小型登录部分下方填写表格字段。这可能吗?这是我到目前为止,我有点卡住任何建议是受欢迎的。请记住,我需要组合来自2个不同表的数据,所以我在查询中使用了LEFT JOIN。

<?php
$connect = mysql_connect("localhost","*********","******") or die ("Couldn't Connect"); //host,username,password
mysql_select_db("virtua15_j*1**") or die ("Could not find database");

$query = mysql_query("SELECT * FROM jos_users LEFT JOIN jos_comprofiler ON jos_users.id=jos_comprofiler.id WHERE jos_users.id = $id");


?>
<html>
<form action="populate.php" method='post'>
 <table>
<tr>
        <td>VAE&nbsp;Username:</td>

        <td><input type='text' name='username' value=''></td>
      </tr>
      <tr>
        <td>VAE&nbsp;Password:</td>

        <td><input type='password' name='password' value=''></td>
      </tr>
 </table>
  <p><input type='submit' name='submit' value='Search & Populate!'></p>
</form>
<hr>

<form action="dafreg.php" method='post'>
<table>
<tr>
<td>Fristname:</td>
<td><input type='text' name='firstname' value='<?php echo $firstname; ?>'></td>
</tr>
<tr><td>Lastname:</td>
<td><input type='text' name='lastname' value='<?php echo $lastname; ?>'></td>
</tr>
<tr>
<td>Login:</td>
<td><input type='text' name='login' value='<?php echo $username; ?>'></td>
</tr>
<tr><td>Password:</td>
<td><input type='text' name='pass' value=''></td>
</tr>
<tr><td>Country:</td>
<td><input type='text' name='country' value=''></td>
</tr>
<tr><td>Pilot:</td>
<td><input type='checkbox' name='pilot' value=''></td>
</tr>
<tr><td>ATC:</td>
<td><input type='checkbox' name='atc' value=''></td>
</tr>
<tr><td>Email:</td>
<td><input type='text' name='email' value=''></td>
</tr>
 </table>
 <p><input type='submit' name='submit' value='Register'></p>
 </form>





</form>


</html>

2 个答案:

答案 0 :(得分:2)

您的查询正确无误,但我SELECT只会显示您需要的字段 - 尽量避免使用*(为什么在您只需要2或3个字段时拉取所有字段及其数据) 。此外,请务必在执行查询时始终转义变量 - 您可以使用mysql_real_escape_string()进行此操作。

您可以通过多种方式循询查询结果,但我更喜欢mysql_fetch_assoc()

所以你的代码看起来像这样得到名字和姓氏(因为你要加入多个表,你应该为每个字段指定表名):

$query = mysql_query("SELECT jos_users.FirstName, jos_users.LastName FROM jos_users LEFT JOIN jos_comprofiler ON jos_users.id=jos_comprofiler.id WHERE jos_users.id = " . mysql_real_escape_string($id));

if ($row = mysql_fetch_assoc($query))
{
    $firstname = $row['FirstName']; //This is whatever the field is called in your table
    $lastname = $row['LastName'];
}

答案 1 :(得分:0)

使用POST检索用户生成的值,例如

$username = $_POST["username"];
$password = $_POST["password"];

然后使用该信息运行任何适当的SQL查询。由于您要存储登录信息,因此应阅读有关在数据库中存储敏感信息的最佳实践。 This thread是一个很好的起点。

您的查询看起来像

$query = mysql_query("SELECT firstname, lastname, ... FROM jos_users LEFT JOIN jos_comprofiler ON jos_users.id=jos_comprofiler.id WHERE jos_users.username = " . $username);

然后,您将处理$ query以将相应的值复制到$ firstname,$ lastname等,并像您一样回显它们。