mysql
  • sql
  • 2014-04-16 5 views -1 likes 
    -1

    MySQL 쿼리의 SET 절이 변수에 의존하는 데이터베이스의 테이블을 업데이트하려면 어떻게해야합니까? 하나의 $ var, 두 개 또는 그 이상일 수 있습니다.동적 SQL UPDATE 쿼리

    여기 내 예입니다. 코드 :

    $name = 'comp_name = "'.$nume.'",'; 
    $large = 'logolarge = "'.$linklogolarge.'",'; 
    $small = 'logosmall = "'.$linklogosmall.'",'; 
    
    ............................... 
    
    $sql = 'UPDATE company 
        SET 
          '.$name.' 
          '.$large.' 
          '.$small.' 
        WHERE id_comp = 43 '; 
    

    문제는 UPDATE 쿼리의 일반 구문은 SET 후 ....... 값 사이에 쉼표 ","

    전이 필요하다는 것입니다. 않는 경우

    UPDATE table 
        SET 
        col1 = x , 
        col2 = y , 
        col3 = z 
        WHERE id = 4 
    

    과 끝에

    은 하나도 ..... 필요로하기 전에 (예. "Z"후) 그래서

    나는 그 $의 다른 조합을 허용하도록 SQL 쿼리를 만들 수있는 방법 var ... ('. $ 이름.'또는 '. $ 이름.'및 '. $ 큰.'또는 마지막 두 '. $ 큰.'및 '. $ 작은.'.... 등)

    기본적으로 그 3 개의 var 사이의 모든 조합 ... 그리고 아마도 3 개 이상의 var.

    +0

    죄송합니다. 문의하신 내용이 확실하지 않습니다. 명확히 할 수 있습니까? [mysql의'update' 문법] (http://dev.mysql.com/doc/refman/5.0/en/update.html)을 참고하십시오. – showdev

    답변

    1
    $name = "comp_name = '$nume'"; 
    $large = "logolarge = '$linklogolarge'"; 
    $small = "logosmall = '$linklogosmall'"; 
    
    $sql = "UPDATE company SET " . $name; 
    if(! is_null($linklogolarge)) $sql = $sql . ", " . $large; 
    if(! is_null($linklogosmall)) $sql = $sql . ", " . $small; 
    
    $where = " WHERE id_comp = 43"; /* change this if required*/ 
    $sql = $sql . $where; 
    
    echo $sql; 
    
    +0

    도움을 주셔서 감사합니다 ...하지만이 메서드는 경우에만 달러 이름이 항상 NULL이 아닌 경우 작동합니다 ... 모든 종류의 조합을 허용하는 코드를 찾고 ... 어쩌면 3 개 이상의 $ var – ADU77

    +0

    이것은 수동 프로세스 일뿐입니다. 가능한 방법은 내가 제안한 것입니다. 적어도 하나의 열 값이 설정되어 있는지 확인하기 위해'boolean '을 정의하십시오. false 인 경우 쿼리를 실행하지 마십시오. –

    관련 문제