- ベストアンサー
preg_match_allでデータを取得し、DBに格納する方法
- preg_match_all関数を使用してデータを取得し、DBに格納する方法について教えてください。
- 指定したパターンでデータを検索し、取得した結果を配列に格納することができます。
- 取得したデータはまとめてDBに保存したいのですが、どのようにすればよいでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ああ・・・すみません foreach($match[0] as $val){ ですね
その他の回答 (2)
- yambejp
- ベストアンサー率51% (3827/7415)
すみませんtypo ×foreach($matche as $val){ ○foreach($match as $val){ でもダメでしょうか?
お礼
さっそくのご返信ありがとうございます。 修正してPHPを実行しましたが、だめでした、、 修正してPHPを実行するたびにレコードが1つ増える という現象になってます。 また、今度は違うエラーが出てしまいました、、 Warning: mysql_real_escape_string() expects parameter 1 to be string, array given in C:\xampp\htdocs\xxx.php on line 74 これは、引数として文字列を指定するべきなのに配列が指定されたためのエラー ということでしょうか? つまり、一旦文字列にしなおす処理がない ということになりますでしょうか?
- yambejp
- ベストアンサー率51% (3827/7415)
なんかマッチしたデータがかなり中途半端ですが ホントそのデータでよろしいのでしょうか? もしそのまま投入するなら、たとえばこんな風にする foreach($matche as $val){ $sql="INSERT INTO `テーブル`(`カラム`) VALUES('".mysql_real_escape_string($val)."')"; mysql_query($sql); } あとはテーブルの構成次第。 もちろん投入データが多いようであれば、バルク処理で values(データ1),(データ2),・・・ みたいな文字列をつくっても好いかと思います
お礼
アドバイスありがとうございます。 たとえばこんな風 で記述してました。 実行しましたが、、DBにデータが1レコードも格納されません。。 対象データ3000くらいあるからでしょうか。。
補足
エラーは Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\xxx.php on line 73 というものでした..
お礼
できました!意図したとおりにDBのテーブルに格納されました。 アドバイスありがとうございます。