2013-01-06 67 views
0

內容:數據到另一個表中使用

當顯示從TABLE2的數據,與來自TABLE1相關TOPIC_NAME替換TABLE2的主題字段的數目。

詳情:

我有同樣的MySQL數據庫2個表。我需要幫助填充TABLE1中的數組以供TABLE2使用。如果重要,我使用PDO。

無UPDATE或INSERT ...只顯示單詞而不是數字。

我在TABLE1的Foreach循環中嵌套TABLE2 Foreach顯示循環嗎?

或...

能否第一填充與主題數據數組,然後執行TABLE1 FOREACH顯示循環?

或...

我可以直接參考使用來自TABLE2數據,而無需創建一個數組從TABLE1的TOPIC_NAME?

或...

???

============================

TABLE1爲主題的列表。

TABLE1語法:

TOPIC_NUM,TOPIC_NAME

取樣記錄從TABLE1:

1,TOPIC1

2,TOPIC2

等...

= ===========================

TABLE2是個人和相關數據的列表。

TABLE2語法:

ID,名稱,狀態,TOPIC,YEAR

從TABLE2取樣記錄:

1,約翰·史密斯,MA,2,2005

2,簡Doe,AZ,1,2009

etc ...

============================

FYI:在上面的取樣記錄,國家縮寫後的數字是主題。

這裏是我的代碼:

<?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 

?> 

回答

0

只需使用INNER JOIN

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 
+0

< - error in my entry - > – mar2195

0

對於未來的參考,下面是這個腳本的最終版本。我已經添加了一個註釋部分,它使用「點」方法顯示查詢的替代編碼方法。

我測試過這個腳本(使用這兩種方法),它的功能完美。

<?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 

?> 
相關問題