PHP+MySQLでの配列のinsert文について
PHP+MySQLでの配列のinsert文について
はじめまして。
POSTされた配列データのDB一括挿入方法で約2週間悩み中で非常に困っております。
私の配列の理解が不足しているため、初心者の私でもわかるように解決方法をご教示いただけましたら大変助かります!何卒、よろしくお願い致します。
行いたい処理といたしまして、
[index.php]
CSVアップロード(名前・メアド・金額・年月日の4項目)→※解決しました。
↓↓↓
[check.php]
CSVデータをテーブルで入力されている行数分をループして表示→※解決しました。
↓↓↓
[finish.php]
check.phpで表示した配列データをPOSTで受け取りDBに登録する。→※未解決
となります。
ソースは下記のようになります。
※index.phpは今回無関係と思うので省略します。
━━━━ [check.php]ここから ━━━━
・
・
・
<form action="finish.php" method="post">
<? while($arr = fgetcsv_reg($fp,1024)){ ?>
<?
//空行以外を処理
$num = count($arr);
if(!$arr ==''){
//
$namae = $arr[0]; //名前
$mail = $arr[1]; //メアド
$money = $arr[2]; //金額
$year = $arr[3]; //年
$month_hen = $arr[4]; //月
$month = sprintf("%02d", $month_hen); //1~9月(1桁)の場合、前に0を付加する
$day_hen = $arr[5];//日
$day = sprintf("%02d", $day_hen); //1~9日(1桁)の場合、前に0を付加する
//
?>
<input type="hidden" name="namae[]" value="<?php echo $namae ?>">
<input type="hidden" name="mail[]" value="<?php echo $mail ?>">
<input type="hidden" name="money[]" value="<?php echo $money ?>">
<input type="hidden" name="year[]" value="<?php echo $year ?>">
<input type="hidden" name="month[]" value="<?php echo $month ?>">
<input type="hidden" name="day[]" value="<?php echo $day ?>">
・
・
・
<input type="submit" value=" 一括登録する " />
</form>
━━━━ [check.php]ここまで ━━━━
━━━━ [finish.php]ここから ━━━━
・
・
・
// DB登録部分開始
if ($_POST['submit']) {
$arr = array(
'reg_id', //auto_increment
'user_id', //ユーザーID(セッションで保持)
'namae', //名前
'mail', //メアド
'money',//金額
'ymd'//年月日
);
$value = array(
NULL,
mysql_real_escape_string( $_SESSION['user_id'] ),
mysql_real_escape_string( $_POST['namae'] ),
mysql_real_escape_string( $_POST['mail'] ),
mysql_real_escape_string( $_POST['money'] ),
mysql_real_escape_string( $_POST['year'] . '-' . $_POST['month'] . '-' . $_POST['day'] )
);
// DB登録部分終了
//ループ処理開始
foreach ( $arr as $value ) {
$sql = "insert into receipt_issue ( $arr ) values ( $value )";
mysql_query($sql);
$result = mysql_query( $sql ) ;
//ループ処理終了
}
}
・
・
・
━━━━ [finish.php]ここまで ━━━━
というソースなのですが、データベースに登録できません。
例えば「finish.php」内に、
print_r( $_POST['namae'] );
と記述すると、
Array ( [0] => ああ君 [1] => いい君 [2] => うう君 [3] => ええ君 )
とちゃんと配列は受けとれているようです。
そもそもDB接続ができていないということもありません。
※配列でない場合のテストでちゃんと接続・登録できていました。
いろいろ調べた中で、$value = array内の記述方法に問題があるのか・・・
と思い、色々調べて試したのですがダメでした。。。
上記の仕組みでループさせてデータベースに登録するには、どのように記述したらよろしいでしょうか?
情報に不足がございましたら、申し訳ございません。その点ご指摘いただきましたら必要な情報を再度投稿します。
何卒、お力をお貸しいただけましたら幸いでございます。
宜しくお願い致します!
お礼
ご回答ありがとうございました。 言葉足らずでしたら、仰る通りでincludeして利用することを前提としております。 実は、私も個人的な感想で、明らかに配列データの方が処理速度が速いと感じておりました。ただそれが、私のケース特有のものなのかどうか分からず質問した次第です。 大変参考になりました。ありがとうございました。