2012-07-11 57 views
0

的結果我有2個表:解析來自一個表的內容,然後插入解析到另一個

Table document 
============================================================================ 
| id_document | document_address |    document_content   | 
============================================================================ 
|  1  |  C   |Example sentences A. Example sentences B.| 
|  2  |  D   |Example sentences C. Example sentences D.| 
============================================================================ 

我想根據點分離document_content並將其插入到語句表與他們DOC_ID所以語句表將包含:

Table sentence : 
====================================================================== 
| id_row | id_document | id_sentence |  sentence   | 
====================================================================== 
|  1 |  1  |  0   | Example sentences A | 
|  2 |  1  |  1   | Example sentences B | 
|  3 |  2  |  0   | Example sentences C | 
|  4 |  2  |  1   | Example sentences D | 
====================================================================== 

下面的代碼:

<?php 

require_once 'conf.php'; 

$doc_id = array(); 
// get the doc_id 
$result = mysql_query("SELECT id_document FROM document"); 
while($row = mysql_fetch_array($result)) { 
    $doc_id[] = $row['id_document']; 
} 

//get the content 
$sql = mysql_query('SELECT document_content FROM document WHERE id_document IN (' . implode(",", $doc_id) . ')') or die(mysql_error()); 
while ($row = mysql_fetch_array($sql)) { 
    $sentence[] = $row['document_content']; 
} 

$i = 0; 
foreach ($sentence as $sentences){ 
    // Separate based on dot 
    $saveSentence = preg_split('/\\.\\s*/', $sentences); 
    $q = mysql_query("INSERT INTO sentence VALUES('','$doc_id','$i','$saveSentence','') "); 
$i++; 
} 

?> 

但DOC無法讀取_id,並且無法將內容數組插入表中。請幫幫我。非常感謝你:)

回答

1

你沒有獲取DOC_ID
更換

$sql = mysql_query('SELECT document_content FROM document WHERE id_document IN (' . implode(",", $doc_id) . ')') or die(mysql_error()); 
while ($row = mysql_fetch_array($sql)) { 
    $sentence[] = $row['document_content']; 
} 

$i = 0; 
foreach ($sentence as $sentences){ 
// Separate based on dot 
    $saveSentence = preg_split('/\\.\\s*/', $sentences); 
    $q = mysql_query("INSERT INTO sentence VALUES('','$doc_id','$i','$saveSentence','') "); 
$i++; 
} 

$sql = mysql_query('SELECT id_document, document_content FROM document WHERE id_document IN (' . implode(",", $doc_id) . ')') or die(mysql_error()); 
while ($row = mysql_fetch_array($sql)) 
{ 
    $sentence[$row['id_document']] = $row['document_content']; 
} 

foreach ($sentence as $doc_id => $sentences) 
{ 
    $i = 0; 
    foreach(preg_split('/\\.\\s*/', $sentences) as $current_sentence) 
    { 
    $q = mysql_query("INSERT INTO sentence SET id_document = {$doc_id}, id_sentence = {$i}, sentence = '{$current_sentence}'"); 
    $i++; 
    } 
} 
+0

是的,謝謝你這麼多@Puggan硒!那我先把它們分開的內容怎麼樣,所以我可以得到每句話,然後將它們插入句表中的不同行。 – bruine 2012-07-11 14:59:50

+0

我在我的答案中添加了第二個循環,並將您的插入重新編譯爲'INSERT。 SET'爲可讀性 – 2012-07-11 15:07:28

+0

太棒了!感謝您的幫助@Puggan Se :) – bruine 2012-07-11 15:11:10