0
xmlから取得する配列にない行を0で更新しようとしています。配列の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);
私は$ Aをエコーするとき、それは正しく、このようにそれをプリントアウト: 60 ''、 '62'、 '65'、 '73'、 '74'、 '79'、 '83'、」 90 '、' 112 '、' 124 ' 更新は行われません。 何が間違っていますか?あなたは、SQLインジェクションを避けるために、あなたのXML値をエスケープすることから始める必要があり、事前
おかげで働いていた、PDOの更新に必要な場所エスケープを知ってdid't。 クエリの名前にバグがあります。 誰にとっても便利な場合の完全なコードは次のとおりです。 $ sus = array(); foreach($ xml->プロパティを$ node){ $ sus [] = $ node-> suid; } $ escapedValues = str_repeat( '?,'、count($ sus) - 1)。 '?'; $ sth = $ dbh-> prepare( "UPDATE tabla SET alta = 0 ここではsuid NOT IN($ escapedValues)"); $ sth-> execute($ sus); – Helenp
素晴らしい!あなたにはうれしいです。ちょうど適切な変数名で私の答えを編集:) – Clorichel