php+mySQLにおける、Load data Infile

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
punipon

php+mySQLにおける、Load data Infile

#1

投稿記事 by punipon » 7年前

こんばんは。C言語ではなくPhp+MySQLなのですが、質問させていただきます。
PCはmacです。

現在、csvファイルからLOAD DATA INFILE関数を用いてテーブルにデータをインポートするphpプログラムを考えています。

csvファイルは、member_list.csvで、絶対パスは
/Applications/MAMP/htdocs/mysql_php/meibo/data/member_list.csv
に置いてあります。

使用するphpファイルはmemberlist.phpで、絶対パスは
/Applications/MAMP/htdocs/mysql_php/meibo/memberlist.php
に置いてあります。

次のようなコードを組みました。

コード:

<?php

/****************データベースに接続****************/
require_once("db_info.php");

$s = mysqli_connect($SERVER,$USER,$PASSWORD) or die("接続に失敗しました。設定を見直してください。");
mysqli_select_db($s,$DBNAME);
print "<font size ='1'>接続に成功しました。</font><br>";

/****************ヘッダーの設定****************/
print <<<eot1
    <html>
        <head>
            <meta-equiv="Content-Type" content = "text/html;charset = UTF-8">
            <title>名簿管理</title>
        </head>
        <body>
eot1;

$mypass = dirname(__FILE__)."/data/member_list.csv";

/****************csvファイルを読み込んで、tmp_memberテーブルにデータを挿入****************/
$code = <<<eot2
    delete from tmp_member;
    load data infile '/Applications/MAMP/htdocs/mysql_php/meibo/data/member_list.csv' into table tmp_member fields terminated by ',' LINES TERMINATED BY '\r' ignore 1 LINES;
eot2;
mysqli_query($s,$code) or die(mysqli_error($s));




print <<<eot4
        </body>
    <html>
eot4;


/****************データベースから切断****************/
mysqli_close($s);

?>
load data infileの部分がなければ問題なく機能するのですが、そこの部分があるだけでエラーを吐きます。
エラー内容は次の通りです。

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'load data infile '/Applications/MAMP/htdocs/mysql_php/meibo/data/member_list.csv' at line 2

MySQLモニタ上ではエラーが起きないし、ちゃんと実行もされるので、絶対パスが間違っていたり、テーブル構造が間違っているということはないはずです。
しかし、phpでやるとエラーが起きてしまいます。
コマンドにエラーが見当たらず困っています、誰かお助けください。
よろしくお願いします。

punipon

Re: php+mySQLにおける、Load data Infile

#2

投稿記事 by punipon » 7年前

自分でいじってたらうまくいきました。
delete from tmp_member;を消したところ、うまくいきました。2つのクエリを同時に発行しようとしたのがまずかったのかもしれません。

おさわがせしました。

返信

“C言語何でも質問掲示板” へ戻る