Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Можно ли определить сколько полей обновлено? 
:(
    Опции темы
Elfet
Дата 7.2.2008, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Можно ли определить сколько полей обновлено?
Код

$q = mysql_query("UPDATE elfchat_users SET time = '".$time."' WHERE mid = '".$mid."' LIMIT 1"); 



--------------------
PM MAIL WWW Skype   Вверх
Elfet
Дата 7.2.2008, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Нужно что-то вроде этого?
Код

$q = mysql_query("SELECT * TABLE elfchat_users WHERE mid = '".$mid."' LIMIT 1; UPDATE elfchat_users SET time = '".$time."' WHERE mid = '".$mid."' LIMIT 1");



--------------------
PM MAIL WWW Skype   Вверх
GeneralElectric
Дата 7.2.2008, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 797
Регистрация: 11.1.2008

Репутация: 2
Всего: 16



одно
PM MAIL   Вверх
Elfet
Дата 7.2.2008, 17:42 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Цитата(GeneralElectric @ 7.2.2008,  18:37)
одно

А если там нету полей с таким же mid?


--------------------
PM MAIL WWW Skype   Вверх
skyboy
Дата 7.2.2008, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



в общем виде - используя mysql_affected_rows.
GeneralElectric, ответ очень емок, но мне кажется, не учтена возможность, что условие WHERE ни одна запись не удовлетворит. И тогда результат будет - 0. Так что "0 или 1" - наиболее полный ответ.
PM MAIL   Вверх
Elfet
Дата 7.2.2008, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Блин smile
Цитата

When using UPDATE, MySQL will not update columns where the new value is the same as the old value. This creates the possibility that mysql_affected_rows() may not actually equal the number of rows matched, only the number of rows that were literally affected by the query.

Мне это не подходит smile

Как можно объеденить SELECT c UPDATE?


--------------------
PM MAIL WWW Skype   Вверх
GeneralElectric
Дата 7.2.2008, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 797
Регистрация: 11.1.2008

Репутация: 2
Всего: 16



Может быть, лучше озвучить задачу, для которой это требуется?
PM MAIL   Вверх
Elfet
Дата 7.2.2008, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Обновить поле и проверить ест ли вообще такое поле. Не хочу два запроса:
Код

        mysql_query("UPDATE mytab SET time = '".$time."' WHERE mid = '".$mid."' LIMIT 1"); 
        $q = mysql_query("SELECT * FROM mytab WHERE mid = '".$mid."' LIMIT 1");
        if(mysql_num_rows($q) == 1)    
            return true;
        else    
            return false;



--------------------
PM MAIL WWW Skype   Вверх
gta4kv
Дата 7.2.2008, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 4
Всего: 91



Код

UPDATE mytab f1, mytab2 f2 SET f1.time = '".$time."' WHERE f1.mid = '".$mid."' and f2.mid = f1.mid LIMIT 1


Может так? Хотя я не совсем понял задачу.

или 

Код

UPDATE mytab SET time = '666' WHERE mid = (SELECT * FROM mytab WHERE mid = '30' LIMIT 1) LIMIT 1



Это сообщение отредактировал(а) gta4kv - 7.2.2008, 18:18
PM MAIL   Вверх
Elfet
Дата 7.2.2008, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Цитата(gta4kv @  7.2.2008,  19:13 Найти цитируемый пост)
UPDATE mytab SET time = '666' WHERE mid = (SELECT * FROM mytab WHERE mid = '30' LIMIT 1) LIMIT 1

А что вот от сюда вернёт mysql_num_rows($q)?


--------------------
PM MAIL WWW Skype   Вверх
gta4kv
Дата 7.2.2008, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 4
Всего: 91



Цитата(Elfet @ 7.2.2008,  18:23)
Цитата(gta4kv @  7.2.2008,  19:13 Найти цитируемый пост)
UPDATE mytab SET time = '666' WHERE mid = (SELECT * FROM mytab WHERE mid = '30' LIMIT 1) LIMIT 1

А что вот от сюда вернёт mysql_num_rows($q)?

да... и вправду, что)

Добавлено @ 18:29
хотя, помойму если выполниться апдейт должно вернуться что-то типа true от сервера, а если mid'a нету - то и апдейт не выполниться ) ну и значит вернется false, хотя я чувствую что это скорее бред)

и вообще изначально вопрос звучал как:
Цитата

Как можно объеденить SELECT c UPDATE? 


а щас уже что-то не то %)

Это сообщение отредактировал(а) gta4kv - 7.2.2008, 18:32
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0834 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.