Dinamik insert php mysql ve performans

2 Cevap php

Ben görüntülerin bir klasör / dizi var, maksimum 12, 1 de olabilir. Dinamik ekleyebilirsiniz I böylece görüntüler bir görüntü tabloya eklenir yapmanız gerekenler.

Ben şu anda

 $directory = "portfolio_images/$id/Thumbs/";
 $images = glob("" . $directory . "*.jpg");

  for ( $i= 0; $i <= count($images); $i += 1) {

 mysql_query("INSERT INTO project_images  (image_name, project_id)VALUES ('$images[0]', '$id')") or die(mysql_error());

 }

Bu gayet iyi ama bu nasıl performans için, doğru gelmiyor? Daha iyi bir yolu var mı?

Görüntü sayısı, yalnızca hiç 12 olacak.

2 Cevap

Bu çözüm ile, veritabanına 12 insert sorguları kadar göndereceğiz - PHP ve MySQL arasındaki 12 çağrılarına kadar anlamına gelir.

A muhtemelen daha hızlı bir şekilde bir seferde birkaç satır eklemek istiyorum yalnızca bir SQL sorgusu, göndermek olacaktır.

SQL sorgusu aşağıdaki gibi olacaktır:

INSERT INTO project_images  (image_name, project_id)
VALUES ('image name 1', 'id_1'), 
('image name 2', 'id_2'), 
('image name 3', 'id_3'), 
('image name 4', 'id_4')

12.2.5. INSERT Syntax MySQL el kitabına bakınız - böyle bir sorgu örneği var.


This means you could change your code, to build that query, first ; and only then call MySQL once.

Test ettik, ama senin bu biraz benziyorsun alırdım herhalde:

$values = array();
$directory = "portfolio_images/$id/Thumbs/";
$images = glob("" . $directory . "*.jpg");
for ( $i= 0; $i <= count($images); $i += 1) {
    $values[] = "('$images[0]', '$id')";
}

$values_str = implode(', ', $value);
mysql_query("INSERT INTO project_images  (image_name, project_id) VALUES $values_str") or die(mysql_error());
  1. Sen kodunda bir hata var. Değil $ images [0] ama $images[$i]
  2. Your code fail to follow proper SQL syntax. $images[$i]=mysql_real_escape_string($images[$i]) must be added

  3. Pascal belirtildiği gibi Evet, o başka bir yol yapılabilir

  4. Hayır, hiçbir performans sorun yoktur.
  5. or trigger_error() hata mesajı ve ve kullanıcı bildirim için bir şablon işlemek için kullanmak, or die() korkunç bir uygulamadır kullanma