【问题标题】:Database Retrieval with php使用 php 检索数据库
【发布时间】:2013-06-21 12:34:51
【问题描述】:

我正在创建一个页面,它可以从论坛中获取注册会员的详细联系信息。我在尝试检索自定义字段时遇到了一些问题。对于大学和航班,使用下拉菜单,以便用户可以从特定列表中进行选择。但是论坛使用 3 个不同的表来存储数据。 这是表格的一小部分

db mock up http://www.emuas.co.uk/images/db_mock_up.png

目前我得到 uni 查询的 uni 和航班查询的航班,但结果与 user_id 无关。不知道如何改变它。

$user = "SELECT * 
  FROM profile_fields_data 
  JOIN users 
    ON profile_fields_data.user_id = users.user_id 
  ORDER BY users.username";

$uni = "SELECT * 
  FROM profile_fields_data
  JOIN users 
    ON profile_fields_data.user_id = users.user_id
  JOIN profile_fields_lang 
    ON profile_fields_data.pf_university = profile_fields_lang.option_id
  WHERE field_id =4
  ORDER BY users.username";

$flight = "SELECT * 
  FROM profile_fields_data
  JOIN users 
    ON profile_fields_data.user_id = users.user_id
  JOIN profile_fields_lang 
    ON profile_fields_data.pf_flight = profile_fields_lang.option_id
  WHERE field_id =3
  ORDER BY users.username";

$userdata = $db->sql_query($user);
$unidata = $db->sql_query($uni);
$flightdata = $db->sql_query($flight);
while($data = $db->sql_fetchrow($userdata))
{
  $datauni = $db->sql_fetchrow($unidata);
  $dataflight = $db->sql_fetchrow($flightdata);
  echo "<tr>
  <td> <a href='http://emuas.co.uk/forum/memberlist.php?mode=viewprofile&u=" .    $data['user_id'] . "'>" . $data['username'] . "</a></td>
  <td> <a href='mailto:" . $data['user_email'] . "'>" . $data['user_email'] . "</a>  </td>
  <td>" . $data['pf_contact_number'] . "</td>
  <td>" . $data['user_birthday'] . "</td>
  <td>" . $data['pf_service_number'] . "</td>
  <td>" . $datauni['lang_value'] . "</td>
  <td>" . $dataflight['lang_value'] . "</td>
  <td>" . $data['pf_secondary_duty'] . "</td>
  </tr>";

非常感谢

【问题讨论】:

  • 嗨,拜伦,您需要一个 SQL 查询来为某个用户 ID 选择上述所有信息吗?查看一个体面的 SQL 手册(谷歌会提供帮助)并查看 JOIN,尝试一下,如果您需要支持,请发布您的代码 - 虽然只有 SQL - 并提出问题!祝你好运,玩得开心!
  • 既然您在两个查询中都有 users.user_id,您可以加入他们吗?
  • 不同的 where 子句不会阻止我这样做吗?
  • 您可以为各个查询设置别名,这样 'where' 语句就不会争论了。你可能会做一个 UNION 查询..这可能更容易......
  • 认为我找到了问题所在。阅读所有表格后,pf_university 和 pf_flight 值似乎在所有字段中都超出了 +1,但论坛正在正确获取 lang_value。

标签: php sql database join


【解决方案1】:

发现问题。当论坛获得 option_id 的数据时,它的值加了 1。我已将其更改为考虑到这一点

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 2016-11-27
    相关资源
    最近更新 更多