2010-04-16 4 views
0

나는 폴더/이미지 배열을 가지고 있는데, 최대 값은 1 일 수있다. 내가해야할 일은 동적으로 이미지를 추가하여 이미지가 이미지 테이블에 추가되도록하는 것이다. 순간 동적 삽입 PHP mysql과 성능

내가

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

} 

이 괜찮습니다하지만 잘 생각하지 않는이, 어떻게 성능을위한? 더 좋은 방법이 있습니까? PHP와 MySQL 사이에 12 개 통화까지 의미 -

이미지의 최대 수는 오직이 솔루션 (12)

답변

3

을 될 것입니다, 당신은 데이터베이스에 12 개 삽입 질의까지 보내드립니다.

더 빠른 방법은 한 번에 여러 줄을 삽입하는 SQL 쿼리를 하나만 보내는 것입니다. SQL 쿼리는 다음과 같이 보일 것이다

그건 :

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') 

는 MySQL의 설명서에 12.2.5. INSERT Syntax를 참조 - 이러한 쿼리의 예는있다.


즉, 먼저 코드를 변경하여 해당 쿼리를 작성할 수 있습니다. 한 번만 MySQL을 호출하십시오.

없음 테스트,하지만 난 당신이 조금 같을 것이다 수도있을 것 같군요 :

$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
  1. 당신은 당신의 코드에 오류가 있습니다. $ images가 아닌 [0]이지만 $images[$i]
  2. 코드가 올바른 SQL 구문을 따르지 않습니다. $images[$i]=mysql_real_escape_string($images[$i]) 은 파스칼은

  3. 없음

    을 언급 한 바와 같이 그것은 다른 방법을 수행 할 수 있습니다,
  4. 를 추가해야합니다, 성능에 문제가 없습니다. 사용 or die()
  5. 끔찍 연습, 오류 메시지를 처리 ​​할 수 ​​or trigger_error()를 사용하여 사용자 알림에 대한 템플릿입니다