2012-11-28 4 views
0

파일을 읽으려고 시도하고 나서 mysql 테이블에 삽입하려고합니다. 다음을 시도했으며 te 텍스트를 가져 와서 텍스트를 표시합니다. 파일하지만 내가 DB에 삽입하려고하면 행이 생성되지만 아무것도 안쪽에있다 어떤 도움이 필요합니까? PHP에서 파일을 읽지 만 mysql에서 빈 입력을받습니다.

난 당신이 while 루프 내부에

$line .= fgets($file_handle);

$line = fgets($file_handle);

을 변경해야한다고 생각 내 코드

<?php 

$file_handle = fopen("text.htm", "r"); 
while (!feof($file_handle)) { 
    $line = fgets($file_handle); 
    echo $line; 
    // make the DSN 
    $dsn = 'mysql:host=localhost;dbname=text;'; 
    $user = 'text'; 
    $password = 'text'; 
    $name=$line; 
} 
try 
{ 
    $dbh = new PDO($dsn, $user, $password); 
    // set the error mode to exception 
    $dbh->setAttribute(PDO::ATTR_ERRMODE, 
    PDO::ERRMODE_EXCEPTION); 
    $sql = 'INSERT INTO text (db_text) 
        VALUES (:name)'; 
    $stmt = $dbh->prepare($sql); 
    $stmt->bindParam(':name', $name); 
    $stmt->execute(); 
} 
catch (PDOException $e) 
{ 
    echo 'PDO Exception Caught. '; 
    echo 'Error with the database: <br />'; 
    echo 'SQL Query: ', $sql; 
    echo 'Error: ' . $e->getMessage(); 
} 
fclose($file_handle); 

?> 
+0

디버깅 (101) .... 범위의 문제가 될 수 : name ', $ name);'. –

답변

1

입니다.


또한 어딘가에 동안 루프 전에 $line = "";$line 인스턴스화;

fgets은 마지막으로 false (또는 빈 줄 등)을 반환합니다. '('위해서 var_dump ($ 이름) $ stmt-`전`권리> bindParam :

+0

는 작동하지 않습니다. 최악의 상황이되고 $ line = ""; –

+1

'. ='은 연결 연산자입니다. 어떻게 더 나쁜가요? 문자열은 심지어 더 빈 _ 이제입니까? : s – Halcyon

+0

아니요, 브라우저가 멈춰서 파일의 일부를 읽고 루프가 조금 더 읽히고 기타 등등이 생깁니다. –

0

하면 잠시 전에 $ 이름을 선언하려고 ... 그것은

$name = "";  
$file_handle = fopen("text.htm", "r"); 
while (!feof($file_handle)) { 
    $line = fgets($file_handle); 
    echo $line; 
    // make the DSN 
    $dsn = 'mysql:host=localhost;dbname=text;'; 
    $user = 'text'; 
    $password = 'text'; 
    $name=$line; 
} 
+0

아무 것도 일어나지 않지만 첫 번째를 제거하면} 결국 데이터에 넣습니다. 내 DB에 삽입하지만 내 텍스트의 각 줄에 대한 내 DB에 새 입력을 가지고, 그래서 지금은 80 행을 가지고 –

관련 문제