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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с UPDATE в MySQL 
:(
    Опции темы
apostolnikolai
Дата 28.10.2012, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Всем привет! Подскажите в чем мой косяк! 

Код

// - эта часть работает нормально ( если в базе нет данных то производится запись данных )
    foreach ($ACTIVE_CONNECT as $x)
        {
mysql_query("INSERT INTO mt_ppp_active_connections SET active_connections_name='".$x["name"]."', active_connections_service='".$x["service"].
            "', active_connections_caller_id='".$x["caller-id"]."', active_connections_encoding='".$x["encoding"]."', active_connections_address='".$x["address"].
            "', active_connections_uptime='".$x["uptime"]."'");
            
        }
 
}
else
{

     
    foreach ($ACTIVE_CONNECT as $y)
    {
    
// тут нужно чтоб если данные есть обновить из ! и вот с этим косяк ! все строчки после обновления становятся последней записью из массива $y
    
mysql_query("UPDATE IGNORE mt_ppp_active_connections SET active_connections_name='".$y["name"]."', active_connections_service='".$y["service"].
            "', active_connections_caller_id='".$y["caller-id"]."', active_connections_encoding='".$y["encoding"]."', active_connections_address='".$y["address"].
            "', active_connections_uptime='".$y["uptime"]."'");

   }
 
    
}




Добавлено через 4 минуты и 6 секунд
Я понимаю что для корректного обновления мне нужно использовать where id= строки данных которую я собераюсь обновить, но как мне его получить и заставить работать в цикле!
PM MAIL   Вверх
bars80080
Дата 28.10.2012, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



Цитата

все строчки после обновления становятся последней записью из массива $y
сами же знаете почему обновляются все - ведь не указаны условия WHERE. то есть любая запись


Цитата(apostolnikolai @  28.10.2012,  12:09 Найти цитируемый пост)
но как мне его получить

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

если обновить надо только те строки, в которых поле "а" имеет значение х, а поле "в" у, то так и писать:
 ... WHERE `a`="x" AND `b`=y

а с циклом, как японимаю заморочка логическая. у вас цикл внутри условия, хотя должно быть наоборот: условие внутри цикла, тогда каждая строка будет проверяться

вот только само условие неизвестно
PM MAIL WWW   Вверх
apostolnikolai
Дата 28.10.2012, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Спасибо !
PM MAIL   Вверх
Aliance
Дата 29.10.2012, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 3
Всего: 137



Может быть есть смысл просто использовать replace / insert on duplicate key update?
PM MAIL WWW ICQ Skype   Вверх
apostolnikolai
Дата 31.10.2012, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Подскажите еще одну вещь! 

Код

// запись данных в базу из $x
foreach ($ACTIVE_CONNECT as $x)
        {
mysql_query("INSERT INTO mt_ppp_active_connections SET active_connections_name='".$x["name"]."', active_connections_service='".$x["service"].
            "', active_connections_caller_id='".$x["caller-id"]."', active_connections_encoding='".$x["encoding"]."', active_connections_address='".$x["address"].
            "', active_connections_uptime='".$x["uptime"]."'");
            
        }


как удалить строку из базы если это строка не соответствует $x

PM MAIL   Вверх
bars80080
Дата 1.11.2012, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



Код

$sql = 'DELETE FROM `table` WHERE `field`<>"'.$x.'"';

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


 




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


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

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