[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: "Съедание записей" при выборке
liberty87
Доброй ночки!
Подскажите плиз, может ли из-за слабенького или неправильно настроенного сервера, "съедатья записи"? Делаю выборку из таблицы в которой 1425 позиций. Выбираю все, где а1=1, а2=1, а3=1... Смотрю через PMA таких 287 штук (руками вбивал и проверял)... При выборке со страницы сайт выдает 240... Никаких других ограничений нет...
В чем может быть причина??? Весь мозг съел уже... Грешу на сервер, но... хз... Лимиты не стоят...



Спустя 1 час, 10 минут, 35 секунд (26.08.2011 - 01:11) Invis1ble написал(а):
Код выборки в студию

Спустя 33 минуты, 2 секунды (26.08.2011 - 01:44) liberty87 написал(а):
$categ=intval($_GET['categ']);
$nr=$_GET['nr'];
$nov=$_GET['nov'];


$w.=(!empty($categ)?" and tovar.categ='".$categ."'":"");
$w.=(!empty($nr)?" and tovar.nr='1'":"");
$w.=(!empty($nov)?" and tovar.nov='1'":"");


$sql->query("SELECT tovar.id, tovar.name, tovar.article,tovar.image,
tovar.color,tovar.cena,tovar.s1,tovar.s2,tovar.s3,tovar.s4,tovar.s5,tovar.s6
FROM tovar
LEFT JOIN tovar_color ON tovar.id=tovar_color.id_tovar
LEFT JOIN tovar_razmer ON tovar.id=tovar_razmer.id_tovar
INNER JOIN category ON tovar.categ=category.id
WHERE tovar.enable=1 and tovar.d=1"
.$w."
GROUP BY tovar.id
ORDER BY tovar.z"
.(!empty($nov)?"_nov":"").(!empty($nr)?"_naryad":"").((empty($nr)&&empty($nov)&&empty($categ))?"_coll":"")."
asc"
);

Спустя 18 минут, 47 секунд (26.08.2011 - 02:03) inpost написал(а):
1. Напиши: mysql_num_rows - получишь количество выбранных записей.
Сразу же на этой же странице отдельно напиши точь в точь запрос, только $sql->query замени на echo (одновременно с самим запросом).
Запрос выведется на экране, его копи-пасти и вставляй в PMA, смотри там результат по количеству выбора из БД записей.
Ещё одно пояснение, имена ячеек и таблиц возьми в обратную кавычку:
SELECT `tovar`.`id`,`tovar`.`name`
FROM `tovar`

и т.д.

Спустя 33 минуты, 15 секунд (26.08.2011 - 02:36) liberty87 написал(а):
^) inpost, спасибо... Че-йто до такого метода дбага я не дотумкал... Оказался лишний параметр... Спасибо большое! Все работает!!! =)))

Спустя 4 часа, 39 минут, 3 секунды (26.08.2011 - 07:16) linker написал(а):
Второй вариант дебага, перед тем как выполнить запрос сделать ему echo и посмотреть, всё ли там впорядке.

Спустя 13 минут, 34 секунды (26.08.2011 - 07:29) twin написал(а):
Третий вариант - снабдить метод $sql->query кодом, который сам выводит текст запроса на экран. Вот примерно так:
    public function query($sql, $print = false) 
{
$result = mysql_query($sql);

if($result === false || $print)
{
$error = mysql_error();
$trace = debug_backtrace();

$head = $error ?'<b style="color:red">MySQL error: </b><br>
<b style="color:green">'
. $error .'</b><br><br>':NULL;

$error_log = date("Y-m-d h:i:s") .' '. $head .'
<b>Query: </b><br>
<pre><span style="color:#CC0000">'
. $trace[0]['args'][0] .'</pre></span><br><br>
<b>File: </b><b style="color:#660099">'
. $trace[0]['file'] .'</b><br>
<b>Line: </b><b style="color:#660099">'
. $trace[0]['line'] .'</b>';

die($error_log);

else
return
$result;
}


Во первых он сразу покажет всю подноготную при ошибке, во вторых можно поставить true или просто единичку вторым параметром и смотреть в чем дело:

$sql->query("SELECT ........", true);


Ну и при желании можно запрос слогировать.
Быстрый ответ:

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