sql >> データベース >  >> Database Tools >> phpMyAdmin

PHPのデータベースに動的配列を挿入する方法は?

    クエリをforeachループの外に移動する必要があります。これを行う1つの方法があります-

    $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() );                
    }
    

    編集

    2番目の行を追加するには、次のように変更できます(1/2の選択を定義している場所がわからないため、$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() );                
    }
    

    編集#2
    別のバージョンがあります。 forループが無効ですphpfor(i=0;i<row_count;i++) 。それぞれに$が必要です -for($i=0;$i<$row_count;$i++) 。また、sprintfの変数の量が間違っています。 $qで 9つの%dがあります 、ただし$qs あなたは3つしか与えていません。他の6つはどこから来ると思いますか。これで、ループを3ずつ増やすように変更しました-for($i=0;$i<$row_count;$i+=3) 、および使用$Voltage[$i+1], $Duration[$i+1], $Number[$i+1], $Voltage[$i+2], $Duration[$i+2], $Number[$i+2], 残りの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. MySql DB(PHP)への接続の問題

    2. phpMyAdminを使用してMySQLリモートおよびローカルデータベースを同期します

    3. 特定の値を持つ行の後に行を選択します

    4. キーに値を書き込めませんでした\SOFTWAREは、管理者アカウントを持つWindows7マシンにインストールされたSSMSに対して表示されます