[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите оптимизировать код
gricenkom
<?php 
$mysql_host="127.0.0.1"; // MySQL Host [localhost]
$mysql_port="3306"; // MySQL Port [3306]
$mysql_db="db"; // MySQL Database [l2jdb]
$mysql_login="root"; // MySQL User [root]
$mysql_password="root"; // MySQL Password [root]


$link = mysql_connect($mysql_host, $mysql_login, $mysql_password ) or die("<br>Could not connect: " .mysql_error());
mysql_select_db($mysql_db);

$result = mysql_query ("SELECT `object_id` FROM `items` WHERE `item_id` = '6656' AND `item_id` = '6657' AND `item_id` = '6658' AND `item_id` = '6659' AND `item_id` = '6660' AND `item_id` = '6661' AND `item_id` = '6662' AND `item_id` = ' 8191' AND `item_id` = '10170' AND `item_id` = '11600' AND `item_id` = '10314' AND `item_id` = '13471' AND `item_id` = '12813' AND `item_id` = '12812' AND `item_id` = ' 9441'") or die(mysql_error() ."<br/>". $result);

while ($row = mysql_fetch_assoc($result))
{


$result2 = mysql_query("SELECT `itemid` FROM `item_attributes`") or die("Invalid query: " .mysql_error());
while ($row2 = mysql_fetch_assoc($result2))

{
if($row2[itemid])
{
$result3 = mysql_query("SELECT `owner_id` FROM `items` WHERE `object_id` = '".$row2["itemid"]."' ") or die("Invalid query: " .mysql_error());
while ($row3 = mysql_fetch_assoc($result3))
{
$result4 = mysql_query("SELECT `account_name` FROM `characters` WHERE `charId` = '".$row3["owner_id"]."' ") or die("Invalid query: " .mysql_error());
while ($row4 = mysql_fetch_assoc($result4))
{
echo "$row4[account_name]:<br>";
{
$filename = "1.txt";

$fh2 = fopen($filename, "a");
fwrite($fh2,"$row4[account_name]:");
fclose($fh2);


{

$result6 = mysql_query("UPDATE `accounts` SET `accessLevel`= '-100' WHERE `login` = '".$row4["login"]."' ") or die("Invalid query: " .mysql_error());

$result7 = mysql_query("DELETE FROM `item_attributes` WHERE `itemid` = '".$row2["itemid"]."'") or die("Invalid query: " .mysql_error());
}

}
}
}
}
}

}


mysql_free_result($result);
mysql_close($link );


?>

так не работает если поставить так

$result = mysql_query ("SELECT `object_id` FROM `items` WHERE `item_id` = '6656' AND `item_id` = '6657' AND `item_id` = '6658' ") or die(mysql_error() ."<br/>". $result);

тогда работает




Спустя 1 минута, 25 секунд (16.05.2011 - 19:57) gricenkom написал(а):
$result = mysql_query ("SELECT `object_id` FROM `items` WHERE `item_id` = '6656' ") or die(mysql_error() ."<br/>". $result);

Сори вот так работает

Спустя 5 минут, 28 секунд (16.05.2011 - 20:02) Krevedko написал(а):
а как item_id` = '6656' AND `item_id` = '6657' AND `item_id` = '6658'
может одновременно быть 6656 , 6657 и 6658 ? может там ИЛИ должно быть ?

Спустя 4 минуты, 16 секунд (16.05.2011 - 20:07) sharki написал(а):
Krevedko
Всё может быть, если у него работает))
А так это можно заменить
SELECT `object_id` FROM `items` WHERE `item_id` = '6656' AND `item_id` = '6657' AND `item_id` = '6658'

на это
SELECT `object_id` 
FROM `items`
WHERE `item_id` IN(6656,6657,6658)

Спустя 4 минуты, 17 секунд (16.05.2011 - 20:11) alex12060 написал(а):
sharki

Скорее BETWEEN() спасет мир.

Спустя 53 секунды (16.05.2011 - 20:12) sharki написал(а):
alex12060
Ну это на частный случай

Спустя 48 секунд (16.05.2011 - 20:13) Krevedko написал(а):
или как вариант
SELECT `object_id` FROM `items` WHERE `item_id` = '6656' || `item_id` = '6657' || `item_id` = '6658'
но с IN конечно красивее. я хотел, чтобы он сам к этому пришел )

а битвин не спасет, т.к. судя по коду там
item_id` = '6656' AND `item_id` = '6657' AND `item_id` = '6658' AND `item_id` = '6659' AND `item_id` = '6660' AND `item_id` = '6661' AND `item_id` = '6662' AND `item_id` = ' 8191'

Спустя 3 минуты, 19 секунд (16.05.2011 - 20:16) alex12060 написал(а):
Можно сделать примерно так:


...
BETWEEN 6656 AND 6662
AND IN(8191, 10170, 11600, 10314, 13471, 12813, 12812, 9441)

Спустя 1 минута, 8 секунд (16.05.2011 - 20:17) Krevedko написал(а):
можно. вообщем указали тучу вариантов и самое главное указали ошибку, а там пусть тс сам выбирает )

Спустя 54 минуты, 24 секунды (16.05.2011 - 21:11) Dezigo написал(а):
Это не программирование - это называется гавно код.
1. Никогда не пиши в цикле запросы. ( + и в этих циклах ещё запросы)
Это кащунство!
2. Оптимизация - это использовать JOIN (LEFT,RIGHT,FULL,INNER,OUTTER) прочитай про них.

Спустя 9 минут, 33 секунды (16.05.2011 - 21:21) inpost написал(а):
Dezigo
В соседней теме я написал с left join ему код, как видишь, ничего не поменялось smile.gif Сложный случай.

Спустя 24 минуты, 7 секунд (16.05.2011 - 21:45) Krevedko написал(а):
да ему похоже пох. помощь получил и ускакал, даже спасибо не сказал. столько людей тут накидали умных решений

Спустя 6 минут, 47 секунд (16.05.2011 - 21:52) quickxyan написал(а):
каждый решает как хочет или как может)

Спустя 4 минуты, 20 секунд (16.05.2011 - 21:56) Krevedko написал(а):
ну вообще это нормально. понимание , что ты говнокодишь, приходит несколько позже )

Спустя 15 часов, 36 минут, 51 секунда (17.05.2011 - 13:33) gricenkom написал(а):
Я извиняюсь спасибо большое а ускакал я на работу вот пришел и поблагодарил!!!!!! дойдем и до JOIN (LEFT,RIGHT,FULL,INNER,OUTTER)
а сейчас пусть хоть както заработает а потом научимся

Спустя 1 минута, 38 секунд (17.05.2011 - 13:35) Krevedko написал(а):
ну раз пришел и поблагодарил, тогда на здоровье )))
Быстрый ответ:

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