对不清楚的标题感到抱歉,但我不能提出任何更好的。如何通过MySQL中的外键链接检索某些值?
我的困境是:
我在我的数据库中的一个InnoDB表名为 “会议” 具有以下结构:
- MEETING_ID(主键,AUTO_INCREMENT)
- user1_id(外键指向一个名为“users”的表中的user_id)
- user2_id(外键指向一个名为“users”的表中的user_id)
- time(type DATETIME)
- 位置(类型VARCHAR(200))
表 “用户” 是基本的和看起来像这样:
- USER_ID(主键,AUTO_INCREMENT)
- first_name的(类型VARCHAR( 30))
- 姓氏(类型VARCHAR(30))
我与目的PHP文件简单地首席T出了会议,例如:的描述
你救了以下会议信息:
用户1 |用户2 |时间&日期|会议地点
John Doe | Jane Doe | 2010-10-10 10:10:10 |纽约
现在,我只想使用会议ID,调用我的数据库(只有“会议”表),并能够获得user1和user2的first_name和last_name。
现在,我不工作的代码如下所示:
$query = "SELECT * FROM meetings WHERE meeting_id = " . $mid;
$data = mysqli_query($dbc, $query);
$row = mysqli_fetch_array($data); // ANY CHANGES HERE?
...
echo '<p>You saved the following meeting information::</p>';
echo '<table>';
echo '<tr><th>User 1</th><th>User 2</th><th>Time & Date</th><th>Meeting location</th></tr>';
echo '<td>' . $row['user1_id']['first_name'] . ' ' . $row['user1_id']['last_name'] . '</td>'; // NON-WORKING
echo '<td>' . $row['user2_id']['first_name'] . ' ' . $row['user2_id']['last_name'] . '</td>'; // NON-WORKING
echo '<td>' . $row['date_time'] . '</td>';
echo '<td>' . $row['location'] . '</td>';
echo '</table>';
...
(如何)我可以检索未做单独调用到“用户”表中的FIRST_NAME /姓氏链接?当我检查phpMyAdmin时,InnoDB外键链接似乎工作正常。提前谢谢了!
非常感谢精细查询,它确实有帮助。关于你对数据库设计的其他评论,不要担心:在我的例子中,我的名字只是'简化'的变量名,我的数据库看起来并不像这样。 :)不过,再次感谢! – BeeDog 2010-11-16 08:19:00
我现在在脚本中使用$ row ['userX.first_name'],但它根本不起作用。这里是我的查询字符串(用userX取代医生/病人'更好'的抽象): --- $ query =“SELECT patient.first_name,patient.last_name,doctor.first_name,doctor.last_name,appointmentments.date_time,appointment .description从约会JOIN用户患者ON约会.patient_app_id = patient.user_id加入用户医生ON约会.doctor_app_id = doctor.user_id WHERE约会ID =“。 $援助; --- echo''。 $ row ['patient.first_name']。 ''。 $ row ['patient.last_name']。 ''; – BeeDog 2010-11-16 09:30:46
看上去'SELECT time,location,user1.first_name AS user1_first_name ...'更安全,后来引用为'$ row ['user1_first_name']'或在您的病例中,等等...... – Unreason 2010-11-16 10:18:46