2013-08-26 1 views
0
$lines = file('array2.txt'); 
    foreach($lines as $line) 
    { 
     mysql_query("INSERT INTO test (Tweet, Date) VALUES ('$line', '22')"); 
    } 

안녕 모두,file() 함수를 사용하여 연속 루프를 Foreach합니다.

내가 배열로 텍스트 파일에서 줄을 추가 할 파일() 함수를 사용하여 위의 코드를 사용하는 것을 시도하고있다, 그래서 다음 MySQL 데이터베이스에 배치 할 수 있습니다. 내가 사용하고있는 파일에는 100 줄이 들어 있지만 위의 함수를 사용하면 결국 116,000 이상이됩니다. 아무도 이것을 일으키는 원인을 알 수 있습니까? 미리 감사드립니다.

+1

* PSA :. *은'mysql_로는 * '기능 [PHP 5.5에서 사용되지] 있습니다 (http://php.net/manual/en/faq.databases.php#faq.databases.mysql.deprecated). 나중에 새 코드를 작성하는 것은 권장하지 않으므로 나중에 업그레이드하지 못할 수도 있습니다. 대신 [MySQLi] (http://php.net/manual/en/book.mysqli.php) 또는 [PDO] (http://php.net/manual/en/book.pdo.php) 및 [더 나은 PHP 개발자가 되십시오] (http://jason.pureconcepts.net/2012/08/better-php-developer/). –

+3

파일 데이터의 몇 줄을 보여줍니다. – burzum

+1

파일에 빈 줄이 포함될 가능성이 있습니까? –

답변

1

아마도 이런 식으로 시도하십시오. 파일 끝 줄까지 읽습니다. 나이 들어

$file = fopen("file.txt", "r"); 
while (!feof($file)) { 
    $line = fgets($file); 
    // Code where you make DB INSERT 
} 
fclose($file); 

작동, 나는 내가 쓴 만 10 다른 기록을하지 않는

0

이 시도 :

<?php 
$lines = file('array2.txt'); 
foreach($lines as $line) 
{ 
    if(!empty($line)){ 
    $values[]= "('".mysql_real_escape_string($line)."', '22')"; 
    } 
} 
$query = "INSERT INTO test (Tweet, Date) VALUES ".implode(",",$values); 
$result = mysql_query($query) or die(mysql_error()); 
?> 

참고 : 나는 MySQL의 기능은 감가 상각 때문에 mysqli 또는 PDO를 사용하는 것이 좋습니다.

+0

안녕하세요, 저는 여러분의 코드를 시험해 보았습니다. 다음과 같은 에러가 나타납니다. "MySQL 서버가 사라졌습니다" – user2694239

+0

'$ result' 이전에'echo $ query;'가 어떻게 출력되는지보십시오. –

+0

@ user2694239 당신이 초과 한 것 같습니다. [ 'max_allowed_packet'] (http://stackoverflow.com/questions/8062496/how-to-change-max-allowed-packet-size) 설정을 조정할 수 있습니다. – tadman

관련 문제