2012-07-11 81 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