は、私はあなたの$sprawdzone_temp
がSQL Wildcard Characters
ワイルドカード文字が文字列内の他の文字を置き換えるために使用されていない可能性があることを疑います。
ワイルドカード文字は、SQL LIKE演算子とともに使用されます。 LIKE演算子は、WHERE句で列の指定されたパターンを検索するために使用されます。
LIKE演算子と組み合わせて使用される二つのワイルドカードがあります
- (%)は - パーセント記号は、ゼロ、1つ、または複数の文字
2を表します。 (_) - アンダースコアは、単一の文字
を表し、したがって、あなたのコードは、これらの線に沿って次のようになります。
<?php
$sprawdzone_temp = "%".$sprawdzone_temp."%";
$sql = "UPDATE database.table SET `nieaktualny` = 1 WHERE `email_1` LIKE ?";
$stmt = $db->prepare($sql);
foreach($sprawdzone_temp as $email) {
$stmt->execute(array($email));
}
if(!$stmt){
echo "\nPDO::errorInfo():\n";
print_r($db->errorInfo());
}
?>
更新は
私はあなたにもオペレータでSQLを試すことを示唆し、これWHERE句に複数の値を指定できます。
IN演算子は複数のOR条件の省略形です。
<?php
$sprawdzone_temp = array($nadawca);
$in = str_repeat('?,', count($sprawdzone_temp) - 1) . '?';
$sql = "UPDATE database.table SET `nieaktualny` = 1 WHERE `email_1` in($in)";
$stmt = $db->prepare($sql);
$stmt->execute($sprawdzone_temp);
if (!$stmt) {
echo "\nPDO::errorInfo():\n";
print_r($db->errorInfo());
} else {
echo "record updated";
}
?>
ウェブサーバーのエラーログを確認しましたか? try/catchステートメントを見てみましょう。 –
'nieaktualny' = '1'ブール値の代わりに文字列値を渡しています –
' $ sprawdzone_temp'には何の価値がありますか? –