Unico Posted August 5, 2021 Share Posted August 5, 2021 Помогите, пожалуйста, чайнику. У меня старый форум. Делаются почтовые рассылки. И за годы скопилась ни одна тысяча невалидных емейлов. Список этих невалидных емейлов имеется. Мне нужно отписать их от рассылки, а то яндекс тут кое-что изменил, и письма туда доходить стали сложнее, когда невалидных мыл много. То есть есть емейлы [email protected], [email protected], [email protected] Нужно в таблице ibf_members найти все ID пользователей этих емейлов и заменить им всем в поле allow_admin_mail значение с "1" на "0". Не подскажете, какая тут sql-команда тут может быть? Quote Link to comment Share on other sites More sharing options...
Rakot Posted August 6, 2021 Share Posted August 6, 2021 Unico есть способ проще, если не знаешь sql-запросы, сам таким пользуюсь, есть программа для работы с sql, называется navicat, так вот, работает по принципу Ctrl+C, на "0", а в этом обработчике выделяешь нужное количество строк, нажимаешь Ctrl+V, и применить, запрос будет обработан автоматически Quote Link to comment Share on other sites More sharing options...
by_ix Posted August 6, 2021 Share Posted August 6, 2021 UPDATE `ibf_members` SET `allow_admin_mail` = 0 WHERE `mails` in ('mail1' , 'mail2' , 'mail3'); возможно, есть ещё проще запрос. Quote Link to comment Share on other sites More sharing options...
Desti Posted August 6, 2021 Share Posted August 6, 2021 Проще скриптом (создать файлик в корневой директории, назвать, например, upd.php) Адреса для удаления записать в отдельный файлик emails.txt, один адрес на строку, тоже положить в корень. Вызвать http://ваш домен.ru/upd.php Предупреждаю, все такие операции надо делать только с копией таблицы базы. После преобразования и проверки переименовать таблицы. <?php \define('REPORT_EXCEPTIONS', TRUE); $_SERVER['SCRIPT_FILENAME'] = __FILE__; require_once 'init.php'; \IPS\Session\Front::i(); $h = \fopen("./emails.txt", "r"); $limit = 0; $in = array(); if ($h) { while (!feof($h)) { $a = rtrim(fgets($h, 256)); if($a !== '') { $in[] = $a; $limit++; } if($limit==50) { \IPS\Db::i()->update( 'core_members_copy', array('allow_admin_mails' => 0), \IPS\Db::i()->in('email', $in)); $in = array(); $limit = 0; } } fclose($h); if($limit) { \IPS\Db::i()->update( 'core_members_copy', array('allow_admin_mails' => 0), \IPS\Db::i()->in('email', $in)); } } by_ix, alexis, BlackShot and 1 other 4 Quote Link to comment Share on other sites More sharing options...
Unico Posted August 7, 2021 Author Share Posted August 7, 2021 Спасибо. Буду смотреть Quote Link to comment Share on other sites More sharing options...
Zero108 Posted September 30, 2022 Share Posted September 30, 2022 (edited) Никак не пойму, как обновить данные в таблице. Например, поле price = 2000,00. Нужно, чтобы поле price = 2000. Что-то вида: UPDATE `b_catalog_price` SET `price`= substring_index(`price`, 0) where `PRODUCT_ID` = 6935; Поправьте, кто разбирается, запрос, чтобы убрать все цифры после запятой вместе с запятой. Edited September 30, 2022 by Zero108 Quote Link to comment Share on other sites More sharing options...
Desti Posted September 30, 2022 Share Posted September 30, 2022 (edited) UPDATE `b_catalog_price` SET `price`=SUBSTRING_INDEX(`price`, ',', 1) where `PRODUCT_ID` = 6935; Edited September 30, 2022 by Desti by_ix 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.