2012-01-05 4 views
-1

最初の関数は、最後の機能は、私はこの1つの例のようなエラーが出るPHPスクレーパーは

function writeQuotestoDb() { 
    $input_csv = fopen("Poems.csv", "r"); 
    $author_names = array(); 
    $poem_names = array(); 
    $poem_text = array(); 
    $poem_urls = array(); 

    while (($columns = fgetcsv($input_csv, 1000, ",")) !== FALSE) { 
    array_push($author_names, $columns[0]); 
    array_push($poem_names, $columns[1]); 
    array_push($poem_text, $columns[2]); 
    array_push($poem_urls, $columns[3]); 
    } 
    fclose($input_csv); 

    //$dbh = mysql_connect('localhost', 'poetiv', 'alegado'); 
    $dbh = mysql_connect('localhost', 'root', ''); 
    mysql_select_db('test', $dbh); 
    mysql_query("CREATE TABLE IF NOT EXISTS `poem2` (
      `id` INT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY , 
      `author_name` varchar(128) DEFAULT NULL, 
       `poem_name` varchar(128) DEFAULT NULL, 
       `poem_text` text, 
       `poem_url` varchar(1024) DEFAULT NULL 
      ) ENGINE = MYISAM"); 
    mysql_query("TRUNCATE `poem2`");  
    for ($i=0; $i<count($author_names); $i++) { 
     $poems[$i] = substr($poems[$i],7,(strlen($poems[$i])-14)); 
     $poems[$i] = str_replace('"','',$poems[$i]); 
     $query = "insert into poem2 (author_name,poem_name,poem_text,poem_url) values 
     ('" . $author_names[$i] . "', '" . $poem_names[$i]."', '" . $poem_text[$i]."', '" .$poem_urls[$i] ."')"; 
     if(!mysql_query($query)) { echo $query; 
      } 
     } 
    echo count($author_names)." rows....successfully db updated"; 
    //SELECT count(*) FROM `quotes` WHERE criteria = 'Baby Quotes' 
} 

あるこの

   $output_csv = fopen("Poems.csv", "w"); 
..code here 
       $poem_text = trim($pre->innertext); 

       $poem_text = str_replace('"','',$poem_text); 

       $poem_text = html_entity_decode($poem_text); 

       $poem_text = str_replace(array('\\', "\0", "\n", "\r", "\t", "\x1a")," ",$poem_text); 
...code here 
       $p 

    oem_data = array($author_names[$i], $poem_names[$i], $poem_text, $poem_urls[$i]); 
       fputcsv($output_csv, $poem_data); 
...code here 

であるMySQLデータベースエラーに書き込む

「こんにちは大親穀物土星、Virmoグレート!あなたは アンティーク賞賛と貿易Aggrediorあり、ソースを開封してみろ。 メアリー。ギア。 1 2.あなたが、私の主よ、農村色合い 賞賛、2および英国の公共投稿が引退から、長い11月3日 は、自分に有利 あなたのケースを犠牲にするために、彼女の恩知らずの子供たちを、4喜ばせるために、 5私を外国レルムの私の運命 伝える、不滅の実り国を通じて6は産む、7つの ソフトの海

に「英国のそれがために必要かどうかわからない

イムをエスケープされていません」 「または\」

が、私はこのエラーを解決する方法を知っているとSQL dBですべてを書くために完了できるようにしたいと思い

あなたはあなたのを逃れるためにPHPの mysql_real_escape_string機能を使用する必要があります

答えて

3

は、クエリにそれらを差し込む前に、自分の価値観にmysql_real_escape_stringを使用してください。
いっそのこと、時代とともに取得し、prepared statementsPDO拡張子を使用しています。

+0

1 1 mysql_real_escape_stringのを実行する前に、SQLに接続することを読みました。私の状況での1は私がPoem.csvから情報を読み取ったデータをこすりとPoems.csvでそれらを保存し、SQL DBに書き込むように。どのポストで述べた最初の関数のためのmysql_real_escape_stringの1を置くことができるのだろうか?ファイルにデータを書き込む際 – merrill

+0

あなたは '$のquery'変数を構築するときに、あなたがそれを使用し、それを使用しないでください!これらの関数を使用して上の例については、PHPマニュアルをお読みください。 ($のAUTHOR_NAME [$ I])をmysql_real_escape_stringのあなたがそれを置くだろうか。この場合:) – deceze

+0

。...'。しかし、実際に、見てPDOと準備された文?に – merrill

3

あなたが挿入されているトリング。

+0

1 1は、SQLに接続するために、前に読んだことが...私のデータベースに挿入する前に、を通じて私のデータのすべてですmysql_real_escape_stringのを実行します。私の状況での1は私がPoem.csvから情報を読み取ったデータをこすりとPoems.csvでそれらを保存し、SQL DBに書き込むように。どのポストで述べた最初の関数のためのmysql_real_escape_stringの1を置くことができるのだろうか?あなたは、接続を確立した後、しかし、あなたはステートメントを実行する前 – merrill

+0

あなたは、単にあなたのINSERT文でこの関数を呼び出します。アウト。 $クエリ= mysql_real_escape_stringの($クエリ);するmysql_query($クエリ); – landoncz

0

ここで機能1パスは役立ちます

private function makeSqlSafe($data){ 
    $str = @trim($data); 
    if(get_magic_quotes_gpc()){ 
    $data = stripslashes($data); 
    } 
    if(!is_numeric($data)){ 
    $data = "'".mysql_real_escape_string($data)."'"; 
    } 
    return $data; 
} 

希望...

+0

1 1は、mysql_real_escape_stringのを実行する前に、SQLに接続することを読みました。1を私の状況でデータをこすりとPoems.csvに保存して、私はPoem.csv。どのようにからの情報を読んでSQLデシベルへの書き込みに1は、ポストに言及した最初の機能にmysql_real_escape_stringのを置くことができるのだろうか? – merrill

+0

Magic Quotesを 'makeSqlSafe'関数にまとめて扱うのは悪い考えです。 '$ _POST'配列に最初に触れたときに、データに何が起こるかにかかわらず、マジッククォートのスラッシュを取り除く必要があります。あなたがデータで他の何かをしたいと思って、それをデータベースに入れたいのであれば?スラッシュを2回ストリッピングすると(データが大幅に変更される可能性があります)、またはあなた自身が引き起こした問題を回避する必要があります。また、 '@'を使わないでください。また、 '$ str'を使用することはありません。全体として、これは良い機能ではありません。 – deceze