[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: mysql_affected_rows()
freed-master
Подскажите как, используя mysql_affected_rows(), узнать количество затронутых рядов при запросе:
PHP
$q = mysql_query("SELECT * FROM `tb_1`");
while ($r = mysql_fetch_assoc($q)) 
{
  mysql_query("UPDATE `tb_2` SET `qwerty`='".$r['qwerty']."' WHERE `id`='".$r['id']."'"); 
}

Это вообще реально?
У меня не получилось...



Спустя 45 минут, 57 секунд (3.10.2009 - 17:11) Pinoplast написал(а):
PHP
Пример 1. Расширенный пример использования mysql_fetch_assoc()

<?
php

    $conn 
mysql_connect("localhost""mysql_user""mysql_password");
    
    if (!
$conn) {
        echo 
"Unable to connect to DB: " mysql_error();
        exit;
    }
    
    if (!
mysql_select_db("mydbname")) {
        echo 
"Unable to select mydbname: " mysql_error();
        exit;
    }
    
    
$sql "SELECT id as userid, fullname, userstatus 
            FROM   sometable
            WHERE  userstatus = 1"
;

    
$result mysql_query($sql);

    if (!
$result) {
        echo 
"Could not successfully run query ($sql) from DB: " mysql_error();
        exit;
    }
    
    if (
mysql_num_rows($result) == 0) {
        echo 
"No rows found, nothing to print so am exiting";
        exit;
    }

    
// До тех пор, пока в результате содержатся ряды, помещаем их в
    // ассоциативный массив.
    // Заметка: если запрос возвращает только один ряд -- нет нужды в цикле.
    // Заметка: если вы добавите extract($row); в начало цикла, вы сделаете
    //          доступными переменные $userid, $fullname, $userstatus.
    
while ($row mysql_fetch_assoc($result)) {
        echo 
$row["userid"];
        echo 
$row["fullname"];
        echo 
$row["userstatus"];
    }
        
    
mysql_free_result($result);


Спустя 9 минут, 54 секунды (3.10.2009 - 17:20) Pinoplast написал(а):
Понял немного стормозил полез не в тот огород biggrin.gif

Спустя 1 минута, 12 секунд (3.10.2009 - 17:22) SunSet написал(а):
laugh.gif
Думаю, автор, имея почти 400 сообщений в этом форуме уже б научился юзать mysql_fetch_assoc))
Вопрос о mysql_affected_rows()

Спустя 49 минут, 28 секунд (3.10.2009 - 18:11) glock18 написал(а):
freed-master
я вообще в твоем коде его не вижу. покажи как используешь

Спустя 1 минута, 10 секунд (3.10.2009 - 18:12) Pinoplast написал(а):
Так он и хочет чтоб мы ему это подсказали как добавить, я так понял!!!

Спустя 1 час, 44 минуты, 36 секунд (3.10.2009 - 19:57) freed-master написал(а):
Цитата
Так он и хочет чтоб мы ему это подсказали как добавить, я так понял!!!

Именно!
Если поставить mysql_affected_rows() за пределы цыкла - пишет 0, очевидно "считает" что последний запрос был select
Поставить в цикл - чесно говоря не пробовал, но думаю будет 1...

Вопрос - можно ли вообще использовать mysql_affected_rows() с циклом?

Спустя 5 минут, 2 секунды (3.10.2009 - 20:02) Krevedko написал(а):
PHP
mysql_query("UPDATE `tb_2` SET `qwerty`='".$r['qwerty']."' WHERE `id`='".$r['id']."'"); 
printf ("Обновлено"mysql_affected_rows());


Не работает чтоли ?
Ну или если в цикле не хочешь, то просуммируй и сумму за пределы цикла выведи

Спустя 12 часов, 40 минут, 12 секунд (4.10.2009 - 08:42) freed-master написал(а):
мне нужно результат результат показать за пределами цыкла.
Примерно так:
PHP
while ($r mysql_fetch_assoc($q)) 
{
  
mysql_query("UPDATE `tb_2` SET `qwerty`='".$r['qwerty']."' WHERE `id`='".$r['id']."'"); 
  
$count mysql_affected_rows(); 
}
echo 
$count;

Но так не работает...

Спустя 9 минут, 24 секунды (4.10.2009 - 08:51) Michael написал(а):
mysql_affected_rows выдает кол-во измененных строк в последнем запросе.
Т.е. тебе надо до цикла:
$count =0;
В цикле:
$count += mysql_affected_rows();

Спустя 48 минут, 52 секунды (4.10.2009 - 09:40) glock18 написал(а):
Заметьте, что затрагиваются записи, измененные при обновлении. То есть если при обновлении были присвоены значение такие, что запись осталась прежней (те же что и были), то строка не считается измененной.

По тому, как поступить здесь Michael написал. smile.gif

Спустя 56 минут, 22 секунды (4.10.2009 - 10:37) Michael написал(а):
Цитата (glock18 @ 4.10.2009 - 06:40)
Заметьте, что затрагиваются записи, измененные при обновлении. То есть если при обновлении были присвоены значение такие, что запись осталась прежней (те же что и были), то строка не считается измененной.

Это кстати иногда немного мешает... (сильно БД умные пошли blink.gif ).

Спустя 6 минут, 11 секунд (4.10.2009 - 10:43) glock18 написал(а):
Цитата
Это кстати иногда немного мешает...

иногда мешает, а иногда то что надо smile.gif просто спектр применения этой функции несколько меняется в связи с этой особенностью.

Спустя 3 часа, 45 минут, 47 секунд (4.10.2009 - 14:29) Krevedko написал(а):
Цитата (Michael @ 4.10.2009 - 05:51)
mysql_affected_rows выдает кол-во измененных строк в последнем запросе.
Т.е. тебе надо до цикла:
$count =0;
В цикле:
$count += mysql_affected_rows();

Именно это я и имел ввиду, когда писал
Цитата
Ну или если в цикле не хочешь, то просуммируй и сумму за пределы цикла выведи


Люди, ну думайте сами хоть иногда biggrin.gif

Спустя 14 минут, 55 секунд (4.10.2009 - 14:44) Michael написал(а):
Цитата (Krevedko @ 4.10.2009 - 11:29)
Именно это я и имел ввиду, когда писал
Цитата
Ну или если в цикле не хочешь, то просуммируй и сумму за пределы цикла выведи


В этом контексте будет справедлива установка:
БОЛЬШЕ КОДА, МЕНЬШЕ СЛОВ!
smile.gif

Спустя 3 минуты, 4 секунды (4.10.2009 - 14:47) Krevedko написал(а):
если людям сразу писать готовый код, то они никогда ничему не научатся smile.gif


_____________
Всем, кто заинтересован, могу помочь начать зарабатывать на forex.
Пишите в личку или на e-mail: flash-dirt@yandex.ru
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.