0

重複の可能性:
CSVをmysqlにインポート

右私はこれについていくつかの助けが必要です:

phpmyadminを使用して手動でインポートするのではなく、phpを使用して.csvファイルをmysqlデータベースにインポートしようとしています。

これは私が現在持っているコードです:

if($_REQUEST['func'] == "iid"){
    $db->conn = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME) or 
                      die('There was a problem connecting to the database.');
    $csv = $_POST['csv-file'];
    $path = $csv;
    $row = 1;
    if (($handle = fopen($path, "r")) !== FALSE) {
        while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
            $row++;
            $data_entries[] = $data ;

        }
        fclose($handle);
    }
    // this you'll have to expand
    foreach($data_entries as $line){
        $sql = $db->conn->prepare('INSERT INTO `bd_results`');

        $db->execute($line);
    }
}

ただし、次のエラーが発生します。

Fatal error: Call to undefined method stdClass::execute() in /homepages/19/d372249701/htdocs/business-sites/bowlplex-doubles-new/admin/scores.php on line 44

参考までに、私は以下から取得したこのコードを使用しています:ここ

私はmysql_connectに慣れている$db->connビジネスに精通していません!! だからどんな助けもいただければ幸いです。

4

2 に答える 2

1

この簡単なものを試してください。

if (($handle = fopen("google.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $db->conn->query("INSERT INTO values('" . implode('\',\'', $data) . "');");
    }
    fclose($handle);
}

CSV値にまだ引用符がない場合は、スクリプトでCSV値に引用符を追加する必要がある場合もあります。CSVファイル内の引用符やすべてを処理する必要がある場合は、 http://www.fusionswift.com/2012/07/php-import-csv-to-mysql/にある私のブログ投稿を参照することをお勧めします。

于 2012-07-12T22:00:09.043 に答える
0
foreach($data_entries as $line) {
    $stmt = $db->conn->prepare('INSERT INTO `bd_results` (field1, field2) VALUES (?, ?)');
    $stmt->bindParam('ss', $field1Value, $field2Value);
    list($field1Value, $field2Value) = $line
    $stmt->execute();
}

$ field1Valueが最初のCSV列である場合、$ field2Valueは2番目のCSV列であり、どちらも文字列型であり、bindParam()メソッドでそのように指定されます。

基本的に、クエリ全体を準備する必要があります。次に、変数を割り当てることができます。変数に目的の値が設定されたら、execute()メソッドを使用してクエリを実行します。

これは、プリペアドステートメントの使用方法です。個人的には、Mahnの提案に従い、データを処理する必要がない限り、そのようなタスクにプリペアドステートメントを使用することは避けます。

mysqli_stmt :: bind_param mysqli_stmt :: execute

于 2012-07-12T22:02:08.520 に答える