2017-04-30 3 views
0

xml에서 가져온 배열에없는 행을 0으로 업데이트하려고합니다.array xml에서 mysql을 업데이트

$sus = array(); 
foreach($xml->property as $node) { 
$sus[] = $node->suid; 
} 
$A = "'".implode("','",$sus)."'"; 
echo $A; 
$sth = $dbh->prepare("UPDATE tabla SET 
alta = 0 
WHERE suid NOT IN ($A)"); 
$sth->execute($sus); 

I는 다음과 같이 올바르게를 출력 $ A 에코 경우 : '60', '62', '65', '73', '74', '79', '83', '을 90 ','112 ','124 ' 그러나 업데이트를 수행하지 않으려면 뭐가 잘못 되었나요? 당신은 SQL 주입을 방지하기 위해 XML 값을 탈출하여 시작한다 사전

답변

0

에 감사합니다 : 감사했다

$escapedValues = str_repeat('?,', count($sus) - 1) . '?'; 
$sth = $db->prepare("UPDATE tabla SET alta = 0 WHERE suid NOT IN ($escapedValues)" 
$sth->execute($sus); 
+0

, PDO 업데이트에 필요한 곳에 탈출을 알고 did't. 쿼리 이름에 버그가 있습니다. 다음과 같은 경우 전체 코드가 유용합니다. $ sus = array(); foreach ($ xml-> $ node 속성) { $ sus [] = $ node-> suid; } $ escapedValues ​​= str_repeat ('?,', count ($ sus) - 1). '?'; $ sth = $ dbh-> prepare ("UPDATE tabla 설정 alta = 0 어디 suid NOT IN ($ escapedValues)"); $ sth-> execute ($ sus); – Helenp

+0

좋아요! 너 한테 잘 됐네. 그냥 적절한 변수 이름으로 내 대답을 편집 :) – Clorichel