2011-03-21 3 views
1

(imploded) 배열 내에 포함 된 일련의 필드 이름을 다른 (imploded) 배열 내에 포함 된 값 집합으로 업데이트하는 MySQL 쿼리를 작성하려고합니다. .배열로부터의 필드 값과 배열의 MySQL UPDATE 필드의 이름이 같습니다.

은 내가 지금있는 것은 이것이다 :

$edit= mysql_query ("UPDATE tablename SET `".$EXPfields."` = '".$EXPvalues."' 
WHERE ID = '$ID'"); 

그러나 $EXPfields = EXP1, ?EXP2?, ?EXP3
$EXPvalues = Communications', 'Electronics', 'Engineering
위해 (내파 배열 모두, 실제로 역 따옴표입니다 :?`) 나는 다음과 같은 오류가

메시지 :

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' ?EXP2?, ?EXP3? = 'Communications', 'Electronics', 'Engineering' ' at line 2

(다시,? 실제로는 역 따옴표입니다.`)

나는 여러 해 동안이 게임을 해왔지만, 어디서 잘못되었는지, pls를 볼 수는 없습니다! 감사!

+0

죄송합니다, 그 읽어야합니다 $ EXPfields = EXP1? EXP2? EXP3 – RLJ

답변

1

업데이트 쿼리의 구문은 다음과 같습니다

UPDATE table 
SET column = expression 
WHERE predicates; 


당신은 필드의 배열을 반복하고 열 이름과 값을 모두 포함하는 새로운 배열을 만들 수 있습니다. 예를 들어 :

$update_sql = ''; 

for($i = 0; $i < count($EXPfields); ++i) 
{ 
    $update_sql = "`" . $EXPfields[$i] . "` = '" . $EXPvalues[$i] . "', "; 
} 

$update_sql = substr($update_sql, 0, -2); 

$edit = mysql_query(" 
    UPDATE 
     tablename 
    SET 
     " . $update_sql . " 
    WHERE 
     ID = '$ID'"); 
+0

감사 미키 엘,하지만 난 여전히 같은 구문 오류가 무엇입니까?. 그리고 palindrom, 필드 이름/값의 배열이 매우 길기 때문에 그런 식으로 구조화하고 싶지 않습니다. 아이디어가 있으십니까? 감사. – RLJ

+0

대답을 대답으로 추가하지 마십시오. –

+0

여러 필드를 업데이트하려면 SQL에서 field1 = val1, field2 = val2 등 구문을 사용해야합니다. –

0
UPDATE table 
    SET 
    field1 = expression1, 
    field2 = expression2, 
    field3 = expression3 
WHERE ... 
0

당신은 쉼표로 구분 된 필드 = 값 쌍을 할 필요가있다. 예 :

$query = UPDATE ?tablename? SET ?field1?='value1', ?field2?='value2' WHERE (?field3?='value3')

관련 문제