MySQL Veritabanı PHP 2D Array

4 Cevap php

I have a PHP 2D array, many keys, each with one value, I need to put this into a MySQL database.

The database has 8 fields. Eg. Field1, Field2, Field3, etc.

I am trying to ensure value1 => field1, value2 =>field2, value3 => field3 and so on, when one record is full (i.e. after 8 values) a new record should be created for the next 8 values and so on.

I am aware that the 1st, 9th, 17th, 26th values etc, will need an insert statement and the intermediate values will be an update statement.

What is the best way of going about this?

4 Cevap

Ben doğru bu soruyu aldı array_chunk () mümkün cevaptır.

Ve sonra sadece bir şey bu böyle

foreach ($chunks as $row) {
  array_map $row with mysql_real_escape_string
  implode to get VALUES clause
  INSERT
}

Ama real dizisi örnek kendi ve diğer insanların zaman hem de bir ton tasarruf edebilirsiniz

Eğer anahtarları, değerleri kaydettiğiniz istiyorsanız, array_reverse ilk çağrılmalıdır, söyleyin.

Anlamak için basit bir sayaç kullanmak olacaktır. Gibi:

$cc=0;
while(...){ // Whatever your finished condition is
 if($cc==0){
  //INSERT
 }else{
  //UPDATE
 }
 $cc++;
 if($cc==8) $cc=0;
}

Ben bir PHP 2B dizi, birçok tuşları, tek bir değer ile her var, ben bir MySQL veritabanı içine koymak gerekir.

Çok garip geliyor - PHP 2-boyutlu diziler yapmaz. Sadece diziler iç içe.

Ben 1., 9., 17., 26. değerler, vs, bir ekleme deyimi gerekir farkındayım

Ben size bir 2D dizi yok demektir tahmin - olmayan bir iç içe PHP dizi eşleştirilmiş bir 2D veri seti var .... Bu durumda:

for ($x=0; $x<count($data)/8; $x+=8) {
     $qry="INSERT INTO sometable (f1, f2, f3,f4,f5,f6,f7,f8) VALUES (";
     $join='';
     for ($y=0; $y<8; $y++ ) {
       $qry.=$join . prep_val($data[$x+$y]);
       $join=',';
     }
     mysql_query($qry);
}

(Burada prep_val enloses dizeleri ve meta karakter kaçar)

C.

Ben son eklenen satırın db id tutmak gerektiğini düşünüyorum, ve kaç bu satırdaki alanların ücretsizdir.

Bu db içine yeni veri koyarak ne zaman uygun güncelleme ve / veya ekler yapmak için izin vermelidir.

Eğer array_slice() array_splice() ve array_chunk() işlevleri kullanabilirsiniz bölüme bölme dizi için.