Обработка всех строк в MySQL средствами php

vburyagin

Новичок
Здравствуйте.
Есть база данных (например baza).
В ней есть такие поля: data и status
Есть переменная с текущей датой

Мне необходимо построчно обработать всю базу. А именно сравнить в каждой строке поле data с текущей датой, и если значение в этом поле равно или меньше, чем текущая дата, то перезаписать значение поля status этой же строки.

Помогите пожалуйста, как это можно реализовать на PHP. Всю голову уже сломал.

PS Данный скрипт будет запускаться Cron'ом
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Во-первых ты пропустил понятие "таблица", так как в базе есть именно они, и именно в них есть "поля". Во-вторых, почему это делать на PHP, если можно на SQL?

UPDATE table SET status='xxx' WHERE data <= 'current date'

Но ты показывай как пробовал сделать.
 

vburyagin

Новичок
Вот например я получил значение N строки таблицы:

$data = date('d.m.Y H:i:s');
while ($row = mysqli_fetch_row($result)) {
$datas = $row[data];
if ($datas < $data) {
//...как тут удалить текущую строку (предположим, что $datas действительно меньше )...
}}
 

AnrDaemon

Продвинутый новичок
Какую "текущую"?
Такое ощущение, что ты вообще не понимаешь, что делаешь.
 

Reuniko

Новичок
PHP:
<?
$data = date('d.m.Y H:i:s');
while ($row = mysqli_fetch_row($result)) {
    $datas = $row[data];
    if ($datas < $data) {
        //...как тут удалить текущую строку (предположим, что $datas действительно меньше )...
        // your_table -- имя таблицы
        // id -- код поля идентификатора
        $SQL = "DELETE FROM your_table WHERE id='{$row['id']}'";
        mysqli_query($link, $SQL);
    }
}
 

vburyagin

Новичок
PHP:
<?
$data = date('d.m.Y H:i:s');
while ($row = mysqli_fetch_row($result)) {
    $datas = $row[data];
    if ($datas < $data) {
        //...как тут удалить текущую строку (предположим, что $datas действительно меньше )...
        // your_table -- имя таблицы
        // id -- код поля идентификатора
        $SQL = "DELETE FROM your_table WHERE id='{$row['id']}'";
        mysqli_query($link, $SQL);
    }
}
Здесь я так понимаю, что ID строки определяется сам ( {$row['id']} ) по мере перебора?
 

AnrDaemon

Продвинутый новичок

vburyagin

Новичок
Нашел отличное решение.

<?php
include 'your_db_connection';
mysql_query("DELETE FROM your_table_name WHERE Date < NOW()");
?>

...запуск кроном по расписанию!
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Мда, видимо мой запрос из второго сообщения треда магическим образом пролетел мимо ТС, ну ок. Только решение неверное, если судить по поставленной в первом треде задаче. Там мы просто хотели менять статус, а не удалять строки.
 

vburyagin

Новичок
Мда, видимо мой запрос из второго сообщения треда магическим образом пролетел мимо ТС, ну ок. Только решение неверное, если судить по поставленной в первом треде задаче. Там мы просто хотели менять статус, а не удалять строки.
Да, да. Именно Ваше решение и оказалось необходимым:
UPDATE table SET status='xxx' WHERE data <= 'current date'
Я привел шаблон. А там уж...

Просто не работал раньше вплотную с подобными запросами MySQL. Оказалось все достаточно просто.

Спасибо всем за участие и за помощь, а особенно Вам!
 

AnrDaemon

Продвинутый новичок
Кто вам сказал, что id вообще число?
Не надо делать необоснованных предположений.
Особенно не надо делать предположений, когда проблема легко разрешаема без них.
 
Сверху