ステータスが "File Closed"、not_visible = "0"、status_dateが14日以上前であるかどうかを確認しようとしています。1つ以上のレコードが見つかった場合にSQL文をループする
条件が満たされた場合、not_visibleを "0"から "1"に更新します。 。 SQLは唯一の10件のレコードが見つかった場合でも、一度実行:
これは、いつでもユーザーがログインで起動
問題です。見つかったすべてのレコードの更新を完了するためにループするにはどうしたらいいですか?
global $conn;
$strSQLExists = "select lead_id as a, status_date as b, not_visible as c from tbl_progress where status = 'File Closed' and not_visible = '0' and status_date <= DATE_ADD(CURDATE(), INTERVAL -14 DAY) ";
$rsExists = db_query($strSQLExists,$conn);
$data=db_fetch_array($rsExists);
if($data)
{
$sql = "UPDATE tbl_progress SET not_visible = '1' WHERE lead_id = '".$data["a"]."'";
CustomQuery($sql);
return false;
}
else
{
// if dont exist do something else
}
はちょうど更新するadvicedた: はので、ここで私たちは、次のとおりです。
UPDATE tbl_progress SET not_visible = '1' WHERE status = 'File Closed' and not_visible = '0' and status_date <= DATE_ADD(CURDATE(), INTERVAL -14 DAY)
あなたのコードはSQLインジェクションに対して脆弱です。また、なぜあなたは最初に「選択」しますか?ちょうど '更新'をしてください。 – melpomene
文字列連結を使用してSQLに値を挿入しないで、パラメータを使用します。この場合、値をフォーマットする必要はありません。より一般的には、悪意のあるデータがスリップするときにあなたを救います。 – Richard
1つのステートメント(UPDATE)を作成する利点は、1つのステートメント内の条件に一致するすべてのレコードを更新することです。これは今学ぶのに役立つものです! –