sql >> Database teknologi >  >> Database Tools >> phpMyAdmin

Hvordan indsætter man dynamisk array i databasen i php?

Du skal flytte din forespørgsel ud af foreach loop. Her er en måde at gøre det på -

$Voltage = array();
$Duration = array();
$Number = array();

foreach($asma as $key => $value) 
{

   foreach ( $value as $ind => $hObject ) {
      $Voltage[] = $hObject->Voltage;
      $Duration[] = $hObject->Duration;
      $Number[] = $hObject->Number;               ,
   }

} // endforeach
$q = "INSERT INTO ga (fe, fe1, fe2,fe3,fe4,fe5,fe6,f7,f8, timestamp,username ) VALUES (%d, %d, %d,%d, %d, %d,%d, %d, %d, '%s' ,'$login_session')";
$qs = sprintf( $q, $Voltage[0],$Duration[0],$Number[0],
                   $Voltage[1],$Duration[1],$Number[1],
                   $Voltage[2],$Duration[2],$Number[2],
                   date("Y-m-d H:i:s") );
$result = mysql_query($qs);
if ( ! $result ) {
     die( 'Insert failed ' . mysql_errno() . ' ' . mysql_error() );                
}

rediger

for at tilføje en anden række, kan du ændre den til noget som dette (bemærk, jeg kan ikke se, hvor du definerer markeringen for 1/2, så jeg sætter bare $user_select ) -

$Voltage = array();
$Duration = array();
$Number = array();

foreach($asma as $key => $value) 
{

   foreach ( $value as $ind => $hObject ) {
      $Voltage[] = $hObject->Voltage;
      $Duration[] = $hObject->Duration;
      $Number[] = $hObject->Number;               ,
   }

} // endforeach
$q = "INSERT INTO ga (fe, fe1, fe2,fe3,fe4,fe5,fe6,f7,f8, timestamp,username ) VALUES (%d, %d, %d,%d, %d, %d,%d, %d, %d, '%s' ,'$login_session')";
$qs = sprintf( $q, $Voltage[0],$Duration[0],$Number[0],
                   $Voltage[1],$Duration[1],$Number[1],
                   $Voltage[2],$Duration[2],$Number[2],
                   date("Y-m-d H:i:s") );
if($user_select==2){  // if user select 2
    $q = ", (%d, %d, %d,%d, %d, %d,%d, %d, %d, '%s' ,'$login_session')";
    $qs = sprintf( $qs.$q, $Voltage[3],$Duration[3],$Number[3],
                             $Voltage[4],$Duration[4],$Number[4],
                             $Voltage[5],$Duration[5],$Number[5],
                             date("Y-m-d H:i:s") );
}
$result = mysql_query($qs);
if ( ! $result ) {
     die( 'Insert failed ' . mysql_errno() . ' ' . mysql_error() );                
}

rediger #2
her er en anden version. Din for-løkke er ikke gyldig php for(i=0;i<row_count;i++) . hver af dem skal have en $ - for($i=0;$i<$row_count;$i++) . Din sprintf har også den forkerte mængde variabler. I din $q du har 9 %d , men i $qs du giver kun 3. Hvor forventer du, at de andre 6 kommer fra. I dette har jeg ændret din loop til at øge med 3 - for($i=0;$i<$row_count;$i+=3) , og brugte $Voltage[$i+1], $Duration[$i+1], $Number[$i+1], $Voltage[$i+2], $Duration[$i+2], $Number[$i+2], for at udfylde de resterende 6 %d s

$Voltage = array();
$Duration = array();
$Number = array();

foreach($asma as $key => $value) 
{

   foreach ( $value as $ind => $hObject ) 
   {
      $Voltage[] = $hObject->Voltage;
      $Duration[] = $hObject->Duration;
      $Number[] = $hObject->Number;               

} }// endforeach
for($i=0;$i<$row_count;$i+=3)
{

  $q = "INSERT INTO ga (fe, fe1, fe2,fe3,fe4,fe5,fe6,f7,f8, timestamp,username ) VALUES (%d, %d, %d,%d, %d, %d,%d, %d, %d, '%s' ,'$login_session')";
  $qs = sprintf( $q, $Voltage[$i],$Duration[$i],$Number[$i],
                     $Voltage[$i+1],$Duration[$i+1],$Number[$i+1],
                     $Voltage[$i+2],$Duration[$i+3],$Number[$i+3],

                   date("Y-m-d H:i:s") );
  $result = mysql_query($qs);
  if ( ! $result ) {
     die( 'Insert failed ' . mysql_errno() . ' ' . mysql_error() );                
 }}}
?>


  1. Forespørgselsudførelsestid i Management Studio &profiler. Hvad måler det?

  2. Redigering af flere rækker efter deres rækkefølgeindeks

  3. Hvordan indstiller man standardværdien, mens man indsætter null-værdi i ikke null-kolonnen SQL Server?

  4. MySQL fejl 2003 ved brug af Navicat