Jump to content

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


Recommended Posts

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

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

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

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

Link to comment
Share on other sites

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

Link to comment
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
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
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
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Ваша ссылка была автоматически строена.   Отображать как обычную ссылку

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...