Jump to content

Не поможете с mysql-запросом?

Featured Replies

Помогите, пожалуйста, чайнику. У меня старый форум. Делаются почтовые рассылки. И за годы скопилась ни одна тысяча невалидных емейлов. Список этих невалидных емейлов имеется. Мне нужно отписать их от рассылки, а то яндекс тут кое-что изменил, и письма туда доходить стали сложнее, когда невалидных мыл много.

То есть есть емейлы [email protected], [email protected], [email protected]

Нужно в таблице ibf_members найти все ID пользователей этих емейлов и заменить им всем в поле allow_admin_mail значение с "1" на "0".

Не подскажете, какая тут sql-команда тут может быть?

Link to comment
https://ipbmafia.ru/topic/23381-ne-pomozhete-s-mysql-zaprosom/
Share on other sites

Unico есть способ проще, если не знаешь sql-запросы, сам таким пользуюсь, есть программа для работы с sql, называется navicat, так вот, работает по принципу Ctrl+C, на "0", а в этом обработчике выделяешь нужное количество строк, нажимаешь Ctrl+V, и применить, запрос будет обработан автоматически

Link to comment
https://ipbmafia.ru/topic/23381-ne-pomozhete-s-mysql-zaprosom/?&do=findComment&comment=171056
Share on other sites

UPDATE `ibf_members` SET
`allow_admin_mail` = 0 WHERE `mails` in ('mail1' , 'mail2' , 'mail3');

возможно, есть ещё проще запрос. 

Link to comment
https://ipbmafia.ru/topic/23381-ne-pomozhete-s-mysql-zaprosom/?&do=findComment&comment=171058
Share on other sites

Проще скриптом (создать файлик в корневой директории, назвать, например, 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));
 }
}

 

Link to comment
https://ipbmafia.ru/topic/23381-ne-pomozhete-s-mysql-zaprosom/?&do=findComment&comment=171064
Share on other sites

Спасибо. Буду смотреть

Link to comment
https://ipbmafia.ru/topic/23381-ne-pomozhete-s-mysql-zaprosom/?&do=findComment&comment=171112
Share on other sites
  • 1 year later...

Никак не пойму, как обновить данные в таблице. 

Например, поле price = 2000,00. Нужно, чтобы поле price = 2000.

Что-то вида:

UPDATE `b_catalog_price` SET `price`= substring_index(`price`, 0) where `PRODUCT_ID` = 6935;

Поправьте, кто разбирается, запрос, чтобы убрать все цифры после запятой вместе с запятой.

Edited by Zero108

Link to comment
https://ipbmafia.ru/topic/23381-ne-pomozhete-s-mysql-zaprosom/?&do=findComment&comment=186763
Share on other sites
UPDATE `b_catalog_price` SET `price`=SUBSTRING_INDEX(`price`, ',', 1) where `PRODUCT_ID` = 6935;

 

Edited by Desti

Link to comment
https://ipbmafia.ru/topic/23381-ne-pomozhete-s-mysql-zaprosom/?&do=findComment&comment=186764
Share on other sites

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.


Guest
Ответить в этой теме...

Последние посетители 0

  • No registered users viewing this page.