Вот такой код: Код (Text): <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta content="text/html; charset=CP-866" http-equiv="content-type"> <title>TEST</title> </head> <body> <?php $db_conn=mysql_connect("localhost", "****", "****") or die("Can`t connect!"); mysql_select_db("Flex", $db_conn); mysql_query("SET NAMES cp866;", $db_conn); $idRTU=45; $TI2_set=mysql_query("SELECT PointDescr, Offset From Points INNER JOIN AnalogEx ON Points.idPoint=AnalogEx.idPoint Where idRTU=$idRTU and 768<=Offset and Offset<=1023 Order by Offset;", $db_conn); if ($k=mysql_num_rows($TI2_set)>0) { echo("$k"); while($TI2=mysql_fetch_row($TI2_set)); { echo("$TI2[0]</br>"); } } ?> </body> </html> не выводит результат запроса. При этом если скопировать в MySQL сам запрос, то он выдает 5 результирующих строк. Кстати переменная $k после mysql_num_rows() имеет значение 1, что наводит на мысль о том, что mysql_query() возвращает просто TRUE как в случае с DELETE, например. Почему так???? Уже всю голову поломал.
В $k у тебя результат сравнения mysql_num_rows($TI2_set)>0 - поскольку записей больше 0 - он равен true, т.е. 1 вместо PHP: if ($k=mysql_num_rows($TI2_set)>0) { echo("$k"); while($TI2=mysql_fetch_row($TI2_set)); { echo("$TI2[0]</br>"); } } попробуй PHP: if ($TI2_set!=false) { $k=mysql_num_rows($TI2_set); echo($k); while($TI2=mysql_fetch_row($TI2_set)); { echo("{$TI2[0]}</br>"); } } вывода нет потому что элемент массива нужно заключать в фигурные скобки внутри строки если опять нет вывода то выведи запрос на экран и его выполни в консоли MySql или в PhpMyAdmin
везде работает без них. Вообще, первый раз вижу такую форму записи. В любом случае, попробовал - как и ожидалось результат эдентичен. Насчет счетчика строк - ты прав, теперь выдает "5", что и должно быть. Вопрос почему не выводит... О_О В консоли уже тестил - есть 5 результирующих строк, о чем собсна писал выше.
А почему вообще mysql_fetch_row используешь? какой ты результат ожидаешь? Почему не например mysql_fetch_assoc?
Кароче, свежие вести: mysql_num_rows() - выдает как и должен 5 цикл Код (Text): while($TI2=mysql_fetch_row($TI2_set)); { echo("$TI2[0]</br>"); } проходится только 1 раз. ПОЧЕМУ???
tommyangelo ну как-то привык к нему Ожидаю не ассоциативный массив с N элементами, где N - количество запрошенных столбцов из БД, пронумерованных начиная с 0. Количество же таких массивов зависит от того, сколько таких строк обнаружил MySQL. Как-то так. А что с ним не так?
Хз, я им вообще никогда не пользовался, но вот пример из мануала меня смутил PHP: <?php $result = mysql_query("SELECT id,email FROM people WHERE id = '42'"); if (!$result) { echo 'Could not run query: ' . mysql_error(); exit; } $row = mysql_fetch_row($result); echo $row[0]; // 42 echo $row[1]; // the email value ?> Т.е. обработался только 1 ряд (row) Я бы сделал так while($TI2=mysql_fetch_assoc($TI2_set)); { echo("PointDescr = $TI2['PointDescr'], Offset = $TI2['Offset']</br>"); }
Неудачно скопировал твой код- нужно было убрать точку с запятой PHP: while($TI2=mysql_fetch_row($TI2_set)) { echo("{$TI2[0]}</br>"); } насчет фигурных скобок- просто привычка при вставке элемента массива в строку их использовать. Если вместо числовых индексов будет переменная, то использование без фигурных скобок приводит к ошибке
tommyangelo fetch_row и fetch_assoc - идентичная штука, просто индексы у одного числовые, а у другого - по названию колонок. Ты в своем примере тоже тащишь по 1 row, просто делаешь это циклично пока они не закончатся, как собственно и я, только другой функцией. НЕ МОГ РАНЬШЕ ПРО НЕЕ СКАЗАТЬ??? )) Все работает! Я как всегда - лопух, тему можно закрывать. Всем спасибо!