
■質問内容:
超初心者です。質問が的外れかもしれませんが自己解決できずにいます。何卒ご教授ください。
達成したい内容は
「PHPでCSVの内容をMySQLで既に作成されたテーブルへ登録したい」というものです。
ネットや書籍でCSVを読み込む方法や、テキストファイルを読み込む方法など試行してみましたが上手くいきません。
■環境:
php:ver5.2.6
MySQL:ver4.0.24
ホスティングサーバはロリポップです。
■状況と経緯:
ソースを交え直接的なご指摘いただけると、大変ありがたいです。
【aaa.csv】
091010-01,TO_001,'【内装】','ドアの取り付け'
091011-02,TO_002,'【外装】','タイル拭きつけ'
・・・・・
のようにカンマ区切りの4つの項目があります。
これを、PHPを介して、
MySQL/DB/
TABLE:
day|ver|module|naiyou (|は区切り)
4つのフィールドへ上記のCSVファイルの左から順に格納したいのです。
○結果的に、
day|ver|module|naiyou(|は区切り)
091010-01|TO_001|'【内装】'|'ドアの取り付け'
091011-02|TO_002|'【外装】'|'タイル拭きつけ'
・・・のようにしたいです。
--以上--
上記について教えてください。
出来れば具体的な記述でご指摘いただけるか参考サイトをご紹介
下さるとありがたいです。
何卒、宜しくお願いいたします。
No.3ベストアンサー
- 回答日時:
そもそもPHPからMySQLへのアクセス方法がわからないという質問に見え
すでに質問の内容が元ネタからはなれている感がありますが
流れ的にはこんな感じで。
<?
$host='localhost';
$user='root';
$passwd='hogehoge';
$db='mydb';
$link=mysql_connect($host,$user,$passwd);
mysql_select_db($db,$link);
$sql="・・・";
$res=mysql_query($sql,$link) or die("error:".mysql_error());
?>
No.2
- 回答日時:
>で、$splの内容(aaa.csv)が表示される状態です。
っというのは
INSERT INTO `table` (`day`,`ver`,`module`,`naiyou`) VALUES('091010-01','TO_001','\'【内装】\'','\'ドアの取り付け\''), ('091011-02','TO_002','\'【外装】\'','\'タイル拭きつけ\'')
が表示されるということでよろしいですか?
(それとも単にcsvのデータが表示されるだけ?)
あとはmysqlへデータを投げるだけです。
http://www.php.net/manual/ja/book.mysql.php
この回答への補足
URLを参考に、また違うサンプルなどwebで探しテストしてみましたが、
MySQL登録にいたっておりません。
引き続きお解りでしたら、教えていただけると助かります。
再び、ご回答頂きありがとうございます。
>が表示されるということでよろしいですか?
はい。その通りです。
>あとはmysqlへデータを投げるだけです。
参考のURLを見ています。
現在のところ、自己解決に至っておりませんがもう少し粘ってみたいと思います。
No.1
- 回答日時:
いくつかやり方はあると思いますが、はしょって書くとこんな感じ
<?
$fname="aaa.csv";
$fp=fopen($fname,"r");
$count=0;
$sql="";
while (($data = fgetcsv($fp, 1024, ",")) !== FALSE) {
$str="";
foreach($data as $val){
if($str!="") $str.=",";
$str.="'".addslashes($val)."'";
}
if($sql!="") $sql.=",";
$sql.="({$str})";
}
$sql="INSERT INTO `table` (`day`,`ver`,`module`,`naiyou`) VALUES".$sql;
print $sql;
?>
セキュリティなどのことを考えるともう少しきちんとエスケープ処理を
入れた方がいいですが、フローをみるだけならこれでわかると思います。
早速のご回答を頂き、ありがとうございます。
教えていただいた方法を試して見ましたが上手く行きませんでした。
私の理解不足が大きいのですが、
$sql="INSERT INTO `table` (`day`,`ver`,`module`,`naiyou`) VALUES".$sql;
print $sql;
?>
で、$splの内容(aaa.csv)が表示される状態です。
勘違いなどご指摘いただけるとありがたいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
phpのheader("Location:#pos")...
-
フォームで戻った際に入力済み...
-
SplFileObject を利用したとき...
-
PHP8を使うと、大量のWarningが...
-
セッション関数を使わずにファ...
-
composerをインストールしたい...
-
php 完了画面の送信メールのコ...
-
csvファイルについて教えて下さ...
-
PHPの変わった閉じタグの必要性...
-
PHP8でWarning:Undefined varia...
-
phpの問い合わせフォームを作っ...
-
marginの値でマイナス値を設定...
-
submitで思うようにページが遷...
-
HTML PHP ラジオボタンのイベント
-
php でqiitaのサイトにあったフ...
-
PHPの勉強してます。 配列のと...
-
BASIC認証のフォームをデザイン...
-
アップロードファイルを表示す...
-
複数のパソコンの中の1つのパソ...
-
返信機能のツリー構造の深さを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Pro*Cの構文エラー
-
JAVA SQLServerException 列名 ...
-
<VB.NET>INSERT文でDBにデータ...
-
insert1つの処理でもトランザ...
-
ResultSetインターフェイスでの...
-
VBA ACCESS SQL...
-
MySQL 複数の同じような命令が...
-
ASPでSQL文を使う場合に。
-
VB勉強中
-
PHPからデータベースに接続した...
-
VB.NET エラーになる箇...
-
SQLインジェクション対策
-
sqliteの構造体
-
Q&Aサイトを作成していてURLの...
-
データベースに存在するデータ...
-
C#でDBの特定列をUpdate
-
エクセルVBAのデータベース接続...
-
チェックボックスからの複数検...
-
SQL文の連結が、うまくいきません
-
CakePHPでquery()を使うときに...
おすすめ情報