-1

だから私は.csvファイルを取得してそれを解析するphpでWebアプリケーションを開発しています。次に、それを mysql データベースに送信します。データの取得に成功し、取得しているすべての数値を入力できます。私が抱えている 1 つの問題は、SQL データベースに日付を挿入することです。

私が認識しているエラーは発生せず、日付の値はちょうど 0000-00-00 です。スクリプト実行時にphp内のデータを画面にエコーしてエラーチェックしています。正常にエコーし、yyyy-mm-dd の形式です。以下は、テストを実行したい場合に問題なく実行される php コードです。残念ながら、システムで wamp/lamp/equivalent が既に実行されていない場合にテストできる公開サーバーはありません。

簡単なものがありませんか?この日付が正しく挿入されないのはなぜですか? 間違ったフォーマットですか?正しい形式のように見えますが、誰が知っていますか?

<?php

    //Connect to Database
    $con=mysqli_connect("localhost","root","","stockmarket");
    // Check connection
    if (mysqli_connect_errno($con))
    {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }


    // Setup URL to download csv file
    $requestUrl = "http://ichart.yahoo.com/table.csv?s=GOOG";


    // Pull data (download CSV as file)
    $CSV = file_get_contents($requestUrl);
    // Split results, trim way the extra line break at the end
    $quotes = explode("\n",trim($CSV));

    //Explore array with .csv contents
    foreach($quotes as $quoteraw) {
    $quoteraw = str_replace(", I", " I", $quoteraw);
    $quote = explode(",", $quoteraw);
    echo $quote[0];//error check, should print dates in correct format      

        //Insert contents into database 
    mysqli_query($con,"INSERT INTO nasdaq (Symbol,Date,Open,High,Low,Close,Volume,Adjusted Close) VALUES ('goog',$quote[0],$quote[1],$quote[2],$quote[3],$quote[4],$quote[5],$quote[6])");
    }

    mysqli_close($con);
?>
4

2 に答える 2

2

MySQL クエリに入る値を引用符で囲むことを忘れないでください。

INSERT INTO nasdaq (Symbol,Date,Open,High,Low,Close,Volume,Adjusted Close) 
VALUES ('goog','".$quote[0]."','".$quote[1]."','".$quote[2]."'"); -- and so on

クエリで SQL エラーが発生します。mysql_query の結果が正しいかどうかを常に確認する必要があります。他の人が指摘したように、個々の$quote値を確実にエスケープし、できれば準備されたステートメントを使用するために、さらに手順を実行する必要があります。

于 2013-07-08T00:18:40.307 に答える