Вверх ↑
Этот топик читают: Гость
Ответов: 203
Рейтинг: 2
#1: 2017-02-21 23:49:49 ЛС | профиль | цитата
Добрый день.
Есть тестовая таблица.


-- --------------------------------------------------------
-- Хост: 127.0.0.1
-- Версия сервера: 5.1.56-community - MySQL Community Server (GPL)
-- Операционная система: Win64
-- HeidiSQL Версия: 9.4.0.5125
-- --------------------------------------------------------

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET NAMES utf8 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;


-- Дамп структуры базы данных energy
CREATE DATABASE IF NOT EXISTS `energy` /*!40100 DEFAULT CHARACTER SET cp1251 COLLATE cp1251_bin */;
USE `energy`;

-- Дамп структуры для таблица energy.test
CREATE TABLE IF NOT EXISTS `test` (
`1` text COLLATE cp1251_bin
) ENGINE=InnoDB DEFAULT CHARSET=cp1251 COLLATE=cp1251_bin;

-- Дамп данных таблицы energy.test: ~2 rows (приблизительно)
/*!40000 ALTER TABLE `test` DISABLE KEYS */;
INSERT INTO `test` (`1`) VALUES
('str8'),
('str3'),
('str5');
/*!40000 ALTER TABLE `test` ENABLE KEYS */;

/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
/*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;

и схема которая показывает что размер массива равен 1, хотя при запросе получаю три значения.


Add(EntryPoint,2953706,56,105)
{
link(onStart,9669263:doConnect,[])
}
Add(mysql_connect,9669263,133,105)
{
Host="127.0.0.1"
Login="root"
Password="admin"
DBName="energy"
link(onConnect,16535916:doQuery,[])
link(onError,1523111:doEcho,[(195,118)(195,181)])
}
Add(Echo,1523111,224,175)
{
AddHint(-18,45,15,13,Message)
}
Add(mysql_query,16535916,224,105)
{
SQL="select * from test"
link(onQuery,2266103:doNumRows,[])
}
Add(mysql_num_rows,2266103,287,105)
{
link(onNumRows,6725079:doEvent,[])
}
Add(For,11810711,399,105)
{
link(onEvent,15700087:doFetchRow,[])
link(onStop,10692408:doGetSize,[(453,118)(453,174)])
}
Add(mysql_fetch_row,15700087,476,105)
{
link(Query,16535916:Result,[(482,93)(386,93)(386,162)(230,162)])
}
Add(Debug,6725079,336,105)
{
link(onEvent,11810711:doFor,[])
}
Add(ArraySize,10692408,476,168)
{
link(onGetSize,14436020:doEcho,[])
link(Array,15700087:Result,[])
}
Add(Echo,14436020,560,168)
{
AddHint(-18,45,15,13,Message)
}

Что я делаю не так .
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#2: 2017-02-22 00:28:45 ЛС | профиль | цитата
Вы преобразовываете результат запроса в массив и ничего с ним не делаете. После окончания цикла For соответственно выдается размер только последнего массива, который состоит из одного элемента "str5". Необходимо использовать массив сразу после его получения в теле цикла, либо добавлять в новый массив.
карма: 27
0
2
Сообщение
...
Прикрепленные файлы
(файлы не залиты)