LOAD DATA INFILEメソッド(データベースへのcsvデータ)を使用してカラムの1つのインクリメント値を保存しようとしています。私が努力していることは何も働いていません。余分なserial_noフィールドがなくても、すべてがうまくインポートされます。また、serial_noにハードコードされた値を設定すると、それも機能します。レコードごとに数値を1ずつ増やすことはできません。php mysqlを使用して各レコードに対して変数値を1ずつインクリメントする方法LOAD DATA INFILE
-
$loadsqlfiletodb = "SET @a:=".$serial_no_max_new.";
LOAD DATA LOCAL INFILE '".$target_file."'
INTO TABLE ".DB_NAME2.".list_data
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '\"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(first,last,address,city,state,zip,company,tracking_number,vin,year,make,model,rough,average,clean,misc1,misc2,misc3,misc4,misc5,misc6,misc7,misc8,misc9,misc10,list,email,phone,image_name,image_path)
SET cid = ".$campaignid.",
jid = ".$jobid.",
serial_no = @a:[email protected]+1 ";
mysql_query($loadsqlfiletodb) or die(mysql_error());
-
$loadsqlfiletodb = "
SET @a:='".$serial_no_max_new."'
LOAD DATA LOCAL INFILE '".$target_file."'
INTO TABLE ".DB_NAME2.".list_data
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '\"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(first,last,address,city,state,zip,company,tracking_number,vin,year,make,model,rough,average,clean,misc1,misc2,misc3,misc4,misc5,misc6,misc7,misc8,misc9,misc10,list,email,phone,image_name,image_path)
SET cid = ".$campaignid.",
jid = ".$jobid.",
serial_no = @a:[email protected]+1 ";
mysql_query($loadsqlfiletodb) or die(mysql_error());
-
$loadsqlfiletodb = "LOAD DATA LOCAL INFILE '".$target_file."'
INTO TABLE ".DB_NAME2.".list_data
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '\"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(first,last,address,city,state,zip,company,tracking_number,vin,year,make,model,rough,average,clean,misc1,misc2,misc3,misc4,misc5,misc6,misc7,misc8,misc9,misc10,list,email,phone,image_name,image_path)
SET cid = ".$campaignid.",
jid = ".$jobid.",
serial_no = ".$serial_no_max_new."+1 ";
mysql_query($loadsqlfiletodb) or die(mysql_error());
-
$loadsqlfiletodb = "LOAD DATA LOCAL INFILE '".$target_file."'
INTO TABLE ".DB_NAME2.".list_data
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '\"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(first,last,address,city,state,zip,company,tracking_number,vin,year,make,model,rough,average,clean,misc1,misc2,misc3,misc4,misc5,misc6,misc7,misc8,misc9,misc10,list,email,phone,image_name,image_path)
SET cid = ".$campaignid.",
jid = ".$jobid.",
serial_no = ".$serial_no_max_new." = ".$serial_no_max_new."+1 ";
mysql_query($loadsqlfiletodb) or die(mysql_error());
更新:
ここは完全なものです。シリアル番号は常に9桁になります。もはや、それほどではありません。シリアルが999999999に達すると、次に記録されるシリアルは000000000になります。ただし、ナインからゼロへの部分は心配しないでください。現時点では、データベースにファイルをインポートするLOAD DATA INFILEメソッドを使用して、その列の値を1ずつインクリメントする方法を理解しようとしています。
$query_max = mysql_fetch_array(mysql_query("SELECT id, latest_serial_no FROM ".DB_NAME2.".latest_serial_number WHERE id=1"), MYSQL_ASSOC);
$serial_no_max = $query_max["latest_serial_no"];
$serial_no_max_new = $serial_no_max;
if ($serial_no_max > 999999998) {$serial_no_max_new = 000000000;}
$padd = "";
$serial_len = strlen($serial_no_max_new);
if($serial_len < 9) {
$serial_len = (9 - $serial_len);
for($is=0;$is<$serial_len;$is++) {
$padd .= "0";
}
$serial_no_max_new = $padd . $serial_no_max_new;
}
$query_serial = trim($serial_no_max_new);
//echo "q_s: ".$query_serial;
//Import uploaded file to Database
//$target_file is where the uploaded file is located
$loadsqlfiletodb = "SET @a:=".$query_serial.";
LOAD DATA LOCAL INFILE '".$target_file."'
INTO TABLE ".DB_NAME2.".list_data
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '\"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(first,last,address,city,state,zip,company,tracking_number,vin,year,make,model,rough,average,clean,misc1,misc2,misc3,misc4,misc5,misc6,misc7,misc8,misc9,misc10,list,email,phone,image_name,image_path)
SET cid = ".$campaignid.",
jid = ".$jobid.",
serial_no = @a:[email protected]+1 ";
mysql_query($loadsqlfiletodb) or die(mysql_error());
は、AUTO_INCREMENTカラムを使用することは、更新プログラムを実行した後
。 –
0に戻って特定の条件で再び開始する必要があるので、autoincrementフィールドタイプを使用することはできません。 – leoarce
コードに条件が表示されません。これはあなたが書いたものです。「レコードごとに数値を1つ増やしてください。ただし、csvを読み込んだ後で列を更新することはできます。 –