2012-11-28 43 views
0

我想读取一个文件,然后我试图插入到MySQL表 我已经尝试了以下,我得到的TE文本,我显示文本从该文件,但当我试图插入数据库的行被创建,但我没有任何内部 任何帮助?PHP从文件读取,但我在空白输入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); 

?> 
+0

调试101:'的var_dump($名)之前'$ stmt-'右> bindParam(” :name',$ name);'。 –

回答

1

我想你应该改变

$line = fgets($file_handle);

$line .= fgets($file_handle);

while循环中。


此外,实例$line与while循环之前某处$line = "";;

fgets上次可能会返回false(或空行或某物)。

+0

不工作的队友。使得它变得最糟糕,而$ line =“”; –

+1

'。='是一个连接运算符。情况如何更糟?字符串甚至现在更空empty_? :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

什么也没有发生,但如果我删除第一个}并把它放在最后的数据插入我的分贝,但为我的文本中的每一行我有一个新的输入在我的分贝,所以我现在有80行 –