人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

下記を条件とするphp+mysqlの
サンプルコードを頂けないでしょうか。

---------------------------------------
テーブルAからデータを全件(10000件程度)抽出し、
100件ずつテーブルBに移し変える。移し変えは、
100件ずつinsert&commitする形で行う。

なお、テーブルA、Bに存在する項目の名称(全角)は
下記2つです。

種類
金額
-----------------------------------------

以上、よろしくお願いします。

●質問者: どらすけ
●カテゴリ:コンピュータ
✍キーワード:MySQL PHP コード データ 名称
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● km1981
●500ポイント

こんな感じです。

冒頭の日本語コメントのところにパラメータを入れてください

MySQLおよびPHPの文字エンコードは正しく設定されているとします

SQLインジェクションのチェックはしていません

<?
$host = DBホスト名
$user = ログインユーザー名
$psw = ログインパスワード
$dnmame = データベース名
$tblA = テーブルAの名前
$tblB = テーブルBの名前
$ofst = 100;//copy record numbers each transaction

//connect DB
$con = @mysql_connect($host, $user, $psw) or die("cannot connect {$host}");
@mysql_select_db($dbname, $con) or die('cannot select ' . $dbname);

//count records
$sql = "SELECT * FROM {$tblA} WHERE 1;";
$res = @mysql_query($sql, $con) ord die("cannot execute query: {$sql}");
$nums = mysql_num_rows($res);

//start transaction
$sql = "begin";
@mysql_query($sql, $con) ord die("cannot execute query: {$sql}");
for ($start = 1; $i <= $nums; $i += ofst) {
//select records <= TABLE A
$sql = "SELECT * FROM {$tblA} WHERE 1 LIMIT {$start},{$start + ofst};";
$res = @mysql_query($sql, $con) ord die("cannot execute query: {$sql}");
insert records => TABLE B
while ($row = mysql_fetch_array($res)) {
$sql = "INSERT INTO {$tblB} (`種類` ,`金額`) VALUES ({$row['種類']},{$row['金額']});";
@mysql_query($sql, $con) ord die("cannot execute query: {$sql}");
}
//commit
$sql = "commit";
@mysql_query($sql, $con) ord die("cannot execute query: {$sql}");

mysql_close($con);
?>

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ