Как получить последние вставленные идентификаторы CSV в стек переполнения

Как я могу получить последние вставленные идентификаторы всех импортированных строк. И обновить столбцы, используя сравнение date_participation по месяцам и годам, а затем вставить в текущие столбцы кварталов, такие как q1, q2, q3, q4.
PHP-код:

             <?php
include("includes/header.php");
session_start();

if(!isset($_SESSION['u_id']))
{
//header("Location: membershippage.php");
}

if ($_FILES[csv][size] > 0) {

$file = $_FILES[csv][tmp_name];
$handle = fopen($file,"r");
do {
if ($data[0]) {
mysql_query("INSERT INTO point_transfer (mbid,name,activity_name,date_participation,points, admin_id, uploaded_date) VALUES
(
'".addslashes($data[0])."',
'".addslashes($data[1])."',
'".addslashes($data[2])."',
'".addslashes($data[3])."',
'".addslashes($data[4])."',
'".addslashes($_SESSION['u_id'])."',
'".addslashes(date("m/d/Y"))."'
)
");
}

} while ($data = fgetcsv($handle,1000,",","'"));
//$last_id = mysql_insert_id();
$sql=("SELECT * FROM point_transfer where id = '".mysql_insert_id()."' ");
$result=mysql_query($sql);
while($row=mysql_fetch_array($result))

{
$mbid =  $row['mbid'];
echo $mbid;

$points = $row['points'];

$mons = array(1 => "January", 2 => "February", 3 => "March", 4 => "April", 5 => "May", 6 => "June", 7 => "July", 8 => "August", 9 => "September", 10 => "October", 11 => "November", 12 => "December");
$date_participation = $row['date_participation'];
list($month, $day, $year) = split('[/.-]', $date_participation);
}
$sql=("SELECT * FROM total_points WHERE mbid='".$mbid."'");
$query=mysql_query($sql);
$row=mysql_fetch_array($query);
$month=$mons[$month];

$q1 = array("January","February", "March");
$q2 = array("April","May", "June");
$q3 = array("July","August", "September");
$q4 = array("October","November", "December");

if (in_array($month, $q1))
{
$add=$row['q1'];

}
elseif(in_array($month, $q2))
{

$add=$row['q2'];

}
elseif(in_array($month, $q3))
{
$add=$row['q3'];
}
elseif(in_array($month, $q4))
{
$add=$row['q4'];
}

$addition=$points + $add;

if (in_array($month, $q1))
{$query=("update total_points SET q1='".$addition."' where mbid='".$mbid."'");
$result=mysql_query($query , $con);}
elseif(in_array($month, $q2))
{

$query=("update total_points SET q2='".$addition."' where mbid= '".$mbid."' ");
$result=mysql_query($query , $con);}
elseif(in_array($month, $q3))
{

$query=("update total_points SET q3='".$addition."' where mbid='".$mbid."'");
$result=mysql_query($query , $con);}
elseif(in_array($month, $q4))
{

$query=("update total_points SET q4='".$addition."' where mbid='".$mbid."' ");
$result=mysql_query($query , $con);
}

echo ("<SCRIPT LANGUAGE='JavaScript'>

window.location.href='point_transfer.php';
</SCRIPT>");

die;

}

?>

1

Решение

Ваше решение здесь состоит в том, чтобы установить массив вне цикла while, а затем добавлять к нему после каждой вставки, используя mysql_insert_id (). Таким образом, у вас будет набор всех новых строк, которые были добавлены.

1

Другие решения

Сохранить последний идентификатор после запроса:

// Before the loop
$list_ids = [];

[...]
$q = mysql_query("INSERT INTO point_transfer (mbid,name,activity_name,date_participation,points, admin_id, uploaded_date) VALUES
(
'".addslashes($data[0])."',
'".addslashes($data[1])."',
'".addslashes($data[2])."',
'".addslashes($data[3])."',
'".addslashes($data[4])."',
'".addslashes($_SESSION['u_id'])."',
'".addslashes(date("m/d/Y"))."'
)
");$list_ids[] = $q->insert_id;

Информация: http://www.w3schools.com/php/php_mysql_insert_lastid.asp

1

По вопросам рекламы [email protected]