Я пытаюсь сохранить добавочное значение для одного из столбцов, используя метод LOAD DATA INFILE (данные csv в базу данных). Ничто из того, что я пытаюсь, работает. без дополнительного поля serial_no все импортируется отлично, и если я устанавливаю жестко закодированное значение в serial_no, это тоже работает. Просто не могу заставить его увеличить числовое значение на 1 для каждой записи.
–
$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:=@a+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:=@a+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. Однако не стоит беспокоиться о части девятки с нулями. в настоящее время я пытаюсь выяснить, как увеличить значение на 1 для этого столбца, используя метод LOAD DATA INFILE импорта файла в базу данных.
$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:=@a+1 "; mysql_query($loadsqlfiletodb) or die(mysql_error());