Bạn cần di chuyển truy vấn của mình ra khỏi vòng lặp foreach. Đây là một cách để làm điều đó -
$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() );
}
chỉnh sửa
để thêm hàng thứ hai, bạn có thể thay đổi nó thành một cái gì đó như thế này (lưu ý, tôi không thấy bạn đang xác định vùng chọn cho 1/2 ở đâu, vì vậy tôi chỉ đặt $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() );
}
chỉnh sửa số 2
đây là một phiên bản khác. Vòng lặp for của bạn không hợp lệ php for(i=0;i<row_count;i++)
. mỗi cái phải có $
- for($i=0;$i<$row_count;$i++)
. Ngoài ra, sprintf của bạn có số lượng biến sai. Trong $q
của bạn bạn có 9 %d
, nhưng trong $qs
bạn chỉ đang cho 3. Bạn mong đợi 6 cái còn lại đến từ đâu. Trong phần này, tôi đã thay đổi vòng lặp của bạn để tăng thêm 3 - for($i=0;$i<$row_count;$i+=3)
và đã sử dụng $Voltage[$i+1], $Duration[$i+1], $Number[$i+1], $Voltage[$i+2], $Duration[$i+2], $Number[$i+2],
để điền vào 6 %d
còn lại 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() );
}}}
?>