0

私はしようとしています

  • tableから取得したフィールドで を作成しますfgetcsv()
  • table-nameフィールドは日付になります(のように13/10/2012)。それを別の文字列に追加して、これをテーブル名として使用したいと考えています。

これまでの私のコード:

if (($handle = fopen($this->filetemp, "r")) !== FALSE) {

    $ctr = 1;
    $tablename ="";

    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        if($ctr ==1) {

            $tablename =  $data[19];

            $query = "CREATE TABLE  ". $tablename ."( PlayerName VARCHAR(60),Handycap INT UNSIGNED NOT NULL,Score INT NOT NULL,Front DOUBLE NOT NULL,Back DOUBLE,Prize VARCHAR(80));" ;
            mysqli_query($this->dbconn,$query);

            $name = str_replace("'"," ",$data[9]);
            mysqli_query($this->dbconn,"INSERT INTO  ". $tablename . " (PlayerName,Handycap,Score,Front,Back) VALUES ('$name', '$data[10]', '$data[11]','$data[12]','$data[13]')");

            $ctr++;
        }
        else if ($ctr > 1)  {
            $name = str_replace("'"," ",$data[9]);
            mysqli_query($this->dbconn,"INSERT INTO  ". $tablename . " (PlayerName,Handycap,Score,Front,Back) VALUES ('$name', '$data[10]', '$data[11]','$data[12]','$data[13]')");

            $ctr++;
        }
    }
    fclose($handle);
}
  • 今のところ、インデックス19の日付を使用しようとしています

    しかし、テーブルは作成されていません!! やってみると。また、他のインデックス値を使用してテーブル名を作成しようとしましたが、まだ機能しません。

私はこれに間違った方法で完全にアプローチしていると思います。乾杯!

サンプル CSV レコード:

「ゴルフ部」、「競技結果報告」、「10月マンスリーメダル 2012/13/10 [ストローク]」、「選手名」、「H'cap」、「スコア」、「表」、「裏」、」新しいハンディキャップ","firstname, secondname","9","66","34.5","31.5","","プレイヤーの印刷:",1,"Genesys Convenor が作成したレポート","印刷: ",13/10/2012,"ページ番号:",1

「ゴルフ部」、「競技結果報告」、「10月マンスリーメダル 2012/13/10 [ストローク]」、「選手名」、「H'cap」、「スコア」、「表」、「裏」、」 New Handicap","firstname, secondname","18","66","33.0","33.0","","プレイヤーの印刷:",2,"Genesys Convenor が作成したレポート","印刷: ",13/10/2012,"ページ番号:",1

4

1 に答える 1

0

投稿の CSV が役に立ちました。テーブル名にはアポストロフィを使用してください。

以下のコードを変更します。

$tablename =  $data[19];

に :

$tablename =  "`".$data[19]."`";

次のような関数を使用してデバッグすると簡単になりますvar_dump()

PS: 非推奨の API の使用はやめてください。

于 2013-01-29T11:39:26.637 に答える