[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Обновить базу 1 запросом
okapo
Всем превет меня попросили поменять в базу с логина на id логина

и так остоновился я на самое тежолое для меня

есть табличка юзеров

user : id | username | referer

referer - это тот кто пригласил на сайте

и в нем и проблема до сих пор он работал с username

как мне сделать что бы поменять всем изеров на сайте ячеку referer с содержание id реферера вместо логин реферера



Спустя 1 час, 4 минуты, 24 секунды (13.02.2012 - 06:13) Игорь_Vasinsky написал(а):
$getIdQuery = mysql_query("SELECT * FROM `table`");

while($row = mysql_fetch_assoc($gqtIdQuery))
{
mysql_query("UPDATE `table` SET `referer` = ".$row['id']) or die(mysql_error());
}


вроде так достаточно, без WHERE... на теории запрос проходит все строки и меняет запись referer на id строки

и я вкурсе что запросы в цикле - зло, но тут без цикла с mysql ни как.
Можно с mysqli в цикле сформировать SQL - и одним запросом отправить в БД.

Спустя 5 минут, 27 секунд (13.02.2012 - 06:18) DooMka написал(а):
Возможно я ошибаюсь, но существует такое слово - как "граббер"

Либо как вариант написать php страницу и прописать эти условия в ней

<?
$result4436 = mysql_query ("SELECT id,username,referer FROM users",$db);
while ($myr3top4111 = mysql_fetch_assoc($result4436))
{
$resuddd6 = mysql_query ("SELECT id,username,referer FROM users",$db);
$myr3tdddop222 = mysql_fetch_assoc($resuddd6)
if ($myr3top4111['username'] == $myr3tdddop222['referer'])
{
$idusers = $myr3top4111['id'];
$id = $myr3tdddop222['id'];
$resul46663 = mysql_query ("UPDATE users SET referer='$idusers' WHERE id='$id'");
}
}

?>


Этот код работать не будет, так-как в нём два запроса к одной и той-же таблице "users" - вам нужно либо создать вторую таблицу, либо каким-либо образом реализовать именно два запроса - я собственно говоря и зашёл на форум по этому поводу...
(D дальнейшем уже сможете переобразовать полу referer в INT)

Вопрос к знатокам, как можно сделать работоспособным второй запрос в коде

$result4436 = mysql_query ("SELECT id,username,referer FROM users",$db);

$resuddd6 = mysql_query ("SELECT id,username,referer FROM users",$db);


второй массив как-бы не создаётся, видимо так устроена работа php и mysql. Спросите, зачем мне это надо, а нужно это по следующей причине, смотрим ниже код

$rekl = mysql_query("SELECT * FROM tabl WHERE pld='$id' ORDER BY vote DESC LIMIT 3",$db);

$rekl2 = mysql_query("SELECT * FROM tabl WHERE plm='$id'",$db);


В первом запросе присутствует ORDER BY vote DESC LIMIT 3 - и его ну никак не перепрыгнуть, потому и возникает потребность во втором - целостном запросе, либо делать полноценный запрос, а уж из него делать выборку 3-х записей, но как это реализовать в коде - я не знаю =(

примерно

$rekl2 = mysql_query("SELECT * FROM tabl WHERE plm='$id'",$db);

$rekl2 - и уже из этого массива сделать такую выборку - ORDER BY vote DESC LIMIT 3
если кто знает, подскажите...

Спустя 7 минут, 5 секунд (13.02.2012 - 06:26) Игорь_Vasinsky написал(а):
Цитата
второй массив как-бы не создаётся, видимо так устроена работа php и mysql. Спросите, зачем мне это надо, а нужно это по следующей причине, смотрим ниже код

тут вообще массивы не создаются - запрос в БД возвращает результат.


Я вообще не понял в чём у тя проблема и какого ты в этой теме на мусолил....

Цитата
Возможно я ошибаюсь, но существует такое слово - как "граббер"

знаем такое, но причём тут эта ситуация??

Цитата
Либо как вариант написать php страницу и прописать эти условия в ней

ph34r.gif тогда уж целый ресурс делать.

Т.е. ты уже опытным путём определил - что мой кусок кода не сработает???

и - на скока я понял работа идёт с одной таблицей.

Спустя 13 минут, 45 секунд (13.02.2012 - 06:39) DooMka написал(а):
Игорь_Vasinsky - твой код я не проверял, просто свой писал долго.

"Намусолил" дабы не создавать новой, а спросить тут, возможно-ли сделать выборку из массива, дабы не создавать повторный запрос к базе.

Как сделать так, чтобы сперва шёл 1 запрос:

$rekl2 = mysql_query("SELECT * FROM tabl WHERE plm='$id'",$db);


Затем выборка из массива $rekl такого рода, но без запроса

$rekl = mysql_query("SELECT * FROM tabl WHERE pld='$id' ORDER BY vote DESC LIMIT 3",$db);


тобиш сделать выборку из массива $rekl трёх записей - ORDER BY vote DESC LIMIT 3

возможно-ли это реализовать?

Спустя 3 минуты, 19 секунд (13.02.2012 - 06:43) Игорь_Vasinsky написал(а):
про запрос в запросе слышал???


http://www.google.ru/webhp?rlz=1C1CHHP_ruR...iw=1280&bih=845

или тя что то другое интересует?

Спустя 7 минут, 29 секунд (13.02.2012 - 06:50) Игорь_Vasinsky написал(а):
Цитата
Как сделать так, чтобы сперва шёл 1 запрос:

$rekl2 = mysql_query("SELECT * FROM tabl WHERE plm='$id'",$db);


Затем выборка из массива $rekl такого рода, но без запроса

$rekl = mysql_query("SELECT * FROM tabl WHERE pld='$id' ORDER BY vote DESC LIMIT 3",$db);


тобиш сделать выборку из массива $rekl трёх записей - ORDER BY vote DESC LIMIT 3

возможно-ли это реализовать?


ни чё не понял - скоко нужно записей стока и возвращай, не хочешь второй раз запрос делать - тогда при первом запросе формируешь массив, а потом только выдёргиваешь из массива 3 нужных те записи

или при формировании первого массива - формируй второй - с нужным кол-вом элементов.

(for, while-do)

Спустя 2 часа, 2 минуты, 57 секунд (13.02.2012 - 08:53) okapo написал(а):
сделал первым постом на этой теме, хост упал смотрел базу вроде все на месте и до конца ( пользователей больше 4000)

мой вопрос

возможны потери ?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.