Php 一个MySQL表中的数据将在另一个表中使用
摘要: 当显示表2中的数据时,用表1中的相关主题名称替换表2中主题字段中的数字 详细信息: 我在同一个MySQL数据库中有两个表。我需要帮助填充表1中的数组以供表2使用。如果重要的话,我正在使用PDO 没有更新或插入。。。只显示单词而不是数字 我是否将TABLE2的Foreach显示循环嵌套在TABLE1的Foreach循环中 或者 我是否可以先用主题数据填充数组,然后执行TABLE1 Foreach显示循环 或者 我可以使用表2中的数据引用表1中的主题名称而不创建数组吗 或者 ============================ 表1是主题列表 表1语法: 主题编号,主题名称 表1中的样本记录: 1、专题1 主题2 等等 ============================ 表2是个人和相关数据的列表 表2语法: ID、姓名、州、主题、年份 表2中的样本记录: 约翰·史密斯,马萨诸塞州,邮编22005 亚利桑那州无名女子2号,邮编12009 等等 ============================ 仅供参考:在上面的示例记录中,州缩写后面的数字是主题 这是我的密码:Php 一个MySQL表中的数据将在另一个表中使用,php,mysql,select,inner-join,Php,Mysql,Select,Inner Join,摘要: 当显示表2中的数据时,用表1中的相关主题名称替换表2中主题字段中的数字 详细信息: 我在同一个MySQL数据库中有两个表。我需要帮助填充表1中的数组以供表2使用。如果重要的话,我正在使用PDO 没有更新或插入。。。只显示单词而不是数字 我是否将TABLE2的Foreach显示循环嵌套在TABLE1的Foreach循环中 或者 我是否可以先用主题数据填充数组,然后执行TABLE1 Foreach显示循环 或者 我可以使用表2中的数据引用表1中的主题名称而不创建数组吗 或者 =======
<?php
try {
$db = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->exec("SET CHARACTER SET utf8");
// TABLE1
$tablename1 = 'topics';
$topics_col1 = 'TOPIC_NUM';
$topics_col2 = 'TOPIC_NAME';
// TABLE2
$tablename2 = 'people';
$items_col1 = 'NAME';
$items_col2 = 'STATE';
$items_col3 = 'TOPIC';
$items_col4 = 'YEAR';
$items_q = "SELECT $items_col1, $items_col2, $items_col3 FROM $tablename2";
$items = $db->query($items_q);
foreach ($items as $items_row) {
?>
<h2><?php
/*
THIS IS WHERE THE TOPIC_NAME FROM TABLE1 SHOULD DISPLAY
*/
?></h2>
<p>
<?php echo $items_row[$items_col1];?>
<br />
<?php echo $items_row[$items_col2];?>
<br />
<?php echo $items_row[$items_col3];?>
<br />
<?php echo $items_row[$items_col4];?>
</p>
<?php
} // end FOREACH
$db = null; // close the database connection
} // end TRY
catch(PDOException $e) {
echo '<span class="error">ERROR:</span><br />'.$e->getMessage() . "<br />";
die();
} // end CATCH
?>
只需使用内部连接
SELECT a.ID, a.NAME, a.STATE, b.TOPIC_NAME , a.YEAR
FROM table2 a
INNER JOIN table1 b
ON a.topic = b.topic_num
<?php
try {
$db = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->exec("SET CHARACTER SET utf8");
// TABLE1
$tablename1 = 'topics';
$topics_col1 = 'TOPIC_NUM';
$topics_col2 = 'TOPIC_NAME';
// TABLE2
$tablename2 = 'people';
$items_col1 = 'NAME';
$items_col2 = 'STATE';
$items_col3 = 'TOPIC';
$items_col4 = 'YEAR';
$items_q = "SELECT $items_col1, $items_col2, $items_col3, $items_col4, $topics_col2
FROM $tablename2
JOIN $tablename1 on ($items_col3 = $topics_col1)";
/* ALTERNATE METHOD FOR QUERY
(*No need for all of the vars above using this method.)
$items_q = "SELECT $tablename2.NAME, $tablename2.STATE, $tablename2.TOPIC, $tablename2.YEAR, $tablename1.TOPIC_NAME
FROM $tablename2
INNER JOIN $tablename1 on ($tablename2.TOPIC = $tablename1.TOPIC_NUM)";
*/
$items = $db->query($items_q);
foreach ($items as $items_row) {
?>
<h2><?php echo $items_row[$topics_col2];?></h2>
<p>
<?php echo $items_row[$items_col1];?>
<br />
<?php echo $items_row[$items_col2];?>
<br />
<?php echo $items_row[$items_col3];?>
<br />
<?php echo $items_row[$items_col4];?>
</p>
<?php
} // end FOREACH
$db = null; // close the database connection
} // end TRY
catch(PDOException $e) {
echo '<span class="error">ERROR:</span><br />'.$e->getMessage() . "<br />";
die();
} // end CATCH
?>