0

私はファイルを読み込もうとしていますが、mysqlテーブルに挿入しようとしています。次のことを試しました。テキストを取得し、ファイルからテキストを表示しますが、データベースに挿入しようとすると行が作成されますが、私は助けの中に何もありませんか?

これは私のコードです

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

?>
4

2 に答える 2

1

私はあなたが変わるべきだと思う

$line = fgets($file_handle);

$line .= fgets($file_handle);

while ループ内。


また、while ループの前のどこかでインスタンス化$lineします。$line = "";

fgetsおそらくfalse前回(または空の行など)を返します。

于 2012-11-28T17:10:39.177 に答える
0

while の前に $name を宣言してみてください...スコープの問題である可能性があります....

$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;
}
于 2012-11-28T17:39:26.837 に答える