Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Заблокирован

Еще раз про fetch_field()

25.10.2013, 10:52. Показов 876. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вариант найти разработчика и вырвать ему гланды не рабочий. Интересен вариант как победить гнилую фичу fetch_field()'ов которые возвращают orgtable в нижнем регистре. За каким членом-корреспондентом это сделано, я вообще понять не могу. В information_schema все лежит как определено при создании. Со всеми большими и маленькими буквами. Это значит принудительно опускают. Но с какой целью? Самое противное что возвращается stdClass, с которым ничего уже не поделаешь. Ну вот, пришлось написать этакий изврат, два массива, один в уперкейсе, второй оригинальные имена таблиц. Затем ищу по уперкейсенному имени в первом, беру индекс, нахожу оригинал во втором, восстанавливаю правду. $%*$@ц!!!

Почему еще раз. Потому что первая "фича" это изменение инфы о полях соединенных таблиц с сортировкой. Тут я в общем зла не держу, хавают, видать, данные из кэша, который оптимизатор наложил. А может он туда и ловеркейс подкинул? В общем нет счастья в жизни.

Или может быть есть?

Ну и в целом, проинформировал, чтобы на грабли не наступали кто пойдет туда.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.10.2013, 10:52
Ответы с готовыми решениями:

вызов этого скрипта ещё раз
Подскажите пожалуйста как сделать Есть скрипт PHP, мне надо в конце добавить «вызов этого скрипта ещё раз с передачей параметра» если...

Еще раз про swing
Доброго времени суток! Есть задача - реализовать адресную книгу. Главный вопрос, в котором я пока не могу никак разобраться, как...

Еще раз про классы
Вот модуль,реализующий класс и его потомки: unit MyClass; interface uses SysUtils,Dialogs,Classes,DateUtils,ComCtrls; type ...

8
363 / 334 / 38
Регистрация: 29.03.2011
Сообщений: 838
25.10.2013, 20:02
sqlnub, а можно ещё раз, только подробно с деталями, но без эмоций, ато нифига не понятно. О чём вы?
0
Заблокирован
25.10.2013, 20:51  [ТС]
Чтобы записать данные в таблицу или несколько не зная заранее их устройства, это самое устройство (DDL) надо запросить из БД и сведения должны быть надежными. Иначе вы рискуете доставать из бэкапа дамп БД, потому что рабочая внезапно вся оказалась заполнена одной-единственной записью.

Добавлено через 6 минут
Короче это не

PHP
1
if(isset($_POST['id']) $id = $_POST['id'];
и так далее чтобы в конце армии иссетов написать как у нас принято:

PHP
1
"select * from table where id = '$id'"
Имя 'id' вы должны определить не зная что оно id, или iden, или identity, или Код_города или folder_id и так далее. Равно как и все остальное. Поэтому имена должны стоять как вкопанные, и не только имена.

Добавлено через 2 минуты
Есть, конечно, теория насчет того, чтобы поднять всем регистр и гребись оно конем. Но дело в том что имена это не только идентификаторы. Они прямиком светятся в интерфейсе, в запросах и поэтому должны выглядеть гуманно и эстетично.

У меня уже обходов этого %$#@го API наверно на пару килобайт.
0
363 / 334 / 38
Регистрация: 29.03.2011
Сообщений: 838
26.10.2013, 01:12
sqlnub, эмм..
Светить имена таблиц во вьюхах - перебор (ну если это нечто вроде phpmyadmin, то они там к месту). Лучше определять их где-то в модели (ну или в конфигах модели). Иначе про multilanguage можно забыть в принципе. Если это не вы так делали (а похоже на то) - звиняйте, думаю, вам это итак очевидно.

По делу: Какая у вас кодировка? Не удалось повторить проблему:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
echo "<pre>";
 
$db = mysqli_connect("localhost","root","", "test");
$db->query ("set character_set_client='utf8'");
$db->query ("set character_set_results='utf8'");
 
$db->query ("set collation_connection='utf8_general_ci'");
$rows = $db->query('SELECT * FROM `ТабЛИца`');
print_r($rows->fetch_field());
print_r($rows->fetch_field());
 
$rows = $db->query('SELECT `IdeNTIficatOR` AS `iD`,`Some-VALUe` AS `SvVs`  FROM `TabLE`');
print_r($rows->fetch_field());
print_r($rows->fetch_field());
 
echo "</pre>";
?>
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
stdClass Object (
    [name] => Ид
    [orgname] => Ид
    [table] => ТабЛИца
    [orgtable] => ТабЛИца
    [def] => 
    [db] => test
    [catalog] => def
    [max_length] => 0
    [length] => 11
    [charsetnr] => 63
    [flags] => 49667
    [type] => 3
    [decimals] => 0
)
stdClass Object (
    [name] => NadPYS
    [orgname] => NadPYS
    [table] => ТабЛИца
    [orgtable] => ТабЛИца
    [def] => 
    [db] => test
    [catalog] => def
    [max_length] => 0
    [length] => 60
    [charsetnr] => 33
    [flags] => 129
    [type] => 253
    [decimals] => 0
)
stdClass Object (
    [name] => iD
    [orgname] => IdeNTIficatOR
    [table] => TabLE
    [orgtable] => TabLE
    [def] => 
    [db] => test
    [catalog] => def
    [max_length] => 0
    [length] => 10
    [charsetnr] => 63
    [flags] => 49699
    [type] => 3
    [decimals] => 0
)
stdClass Object (
    [name] => SvVs
    [orgname] => Some-VALUe
    [table] => TabLE
    [orgtable] => TabLE
    [def] => 
    [db] => test
    [catalog] => def
    [max_length] => 0
    [length] => 90
    [charsetnr] => 33
    [flags] => 1
    [type] => 253
    [decimals] => 0
)
0
Заблокирован
27.10.2013, 00:06  [ТС]
Цитата Сообщение от sKotenok Посмотреть сообщение
Иначе про multilanguage можно забыть в принципе.
Вот оно значит чо. А я думаю нафига все эти прибамбахи с транслитом в урлах. Оказывается есть тайная государственная надежда что заграница нам поможет. Будет посещать наши сайты и поднимать их рейтинг.

Мне это напомнило одно наблюдение. Номерные знаки на японские машины крепят на специальные проставки чтобы бампер не сверлить. Знаете зачем? - В тайной надежде продать свое ведро в Японии.

Так вот, берите выше. Существуют православные домены рф. Это еще мало? Берите выше: пока мы не начнем писать на транслите - я не начну тоже. Вы за то чтобы распрощаться с кириллицей и перейти всей страной на транслит? Я - за.

Если вы против тогда зачем ваше сообщение?

ЗЫ Русского языка в мировом пространстве не существует уже давным-давно. На русском говорят только русские и ничего интересного на русском прочесть нельзя. Так что надежды нет никакой. Ни у кого православный урл не поломается.

Добавлено через 3 минуты
Цитата Сообщение от sKotenok Посмотреть сообщение
$db->query ("set character_set_client='utf8'"); $db->query ("set character_set_results='utf8'"); $db->query ("set collation_connection='utf8_general_ci'"
Это все делается в одну строку через объект коннекта.

Добавлено через 3 минуты
Кстати, ну ладно, кириллица ужасна. Но и латинскими буквами называют таблицы и поля так, чтобы ЦРУ не разгадало в пятилетку.
0
363 / 334 / 38
Регистрация: 29.03.2011
Сообщений: 838
27.10.2013, 00:26
Цитата Сообщение от sqlnub Посмотреть сообщение
Вы за то чтобы распрощаться с кириллицей и перейти всей страной на транслит? Я - за.
Я тоже за, но чаще попадались варианты: русский-украинский-татарский-румынский-{язык ЦА сайта}. Вот ближе к универсиаде в Казани всем местным срочно припёрло ещё и English к ынтерфейсу прикручивать - если б имена напрямую с таблиц брали, впёрлись бы надолго (ну мож кто-нить так и делает, конечно)..
Цитата Сообщение от sqlnub Посмотреть сообщение
Это все делается в одну строку через объект коннекта.
Взял первый попавшийся под руку пример.
Но вопрос не в этом. Надо понять, в каких случаях fetch_field возвращает имена в неверном регистре, чтобы больше не попадаться. Пока повторить не удалось, приведите свой пример (пока что, подозрение на кодировку).
0
Заблокирован
27.10.2013, 06:34  [ТС]
Цитата Сообщение от sKotenok Посмотреть сообщение
Я тоже за, но чаще попадались варианты: русский-украинский-татарский-румынский-{язык ЦА сайта}
Ne doshlo. Russkiy yazyk i simvoly russkogo yazyka nikak ne svyazany. My mozhem pisat' po-russki с помощью любых символов, а для устной речи символы вообще не нужны. Среди братьев-славян полно народов использующих латиницу и многие наши братские народы после распада братства перешли на нее забросив навязанную большим братом кириллицу. Кириллица кроме того - натырена. Это не не самостийный алфавит. Братья КиМ его скомуниздили из нескольких шаблонов.

Добавлено через 1 минуту
fetch_field всегда возвращает в нижнем регистре. Никакие настройки драйвера не помогают. Да фиг с ним. Просто блин получается что хваленая регистронезависимость sql в конкрентной имплементации накрывается тазом. fetch_object не может быть свободен от регистров.

Добавлено через 3 минуты
Только на VB и вообще на таком языке которому самому положить на большие и маленькие SQL будет применяться как задумано. Юникс - суксь.
0
363 / 334 / 38
Регистрация: 29.03.2011
Сообщений: 838
27.10.2013, 07:00
sqlnub, я вам привёл простейший тестовый код и выхлоп - в нижний регист ничего не перевелось. Проблема не повторилась. Проверьте подобным простым способом у себя, если выведет без соблюдения регистра, отпишите, какие параметры, кодировки. Если есть проблема, надо её найти. (предпочитаю о подводных камнях типа этого узнавать заранее).

SQL сам - регистронезависим (SELECT = select = SeLeCt), названия таблиц/полей в мускуле - зависимы (`TableName`!=`tablename`).
1
Заблокирован
27.10.2013, 08:05  [ТС]
А, точно, не заметил в порыве. Пойду искать.

Потому что имя таблицы на майскуле это имя файла, а имя файла на юнике это регистр.

Добавлено через 26 минут
В общем вспомнил что уже касался этой темы. Нашел настройки в ини файле, было

lower_case_table_names = 2

поменял на 1, ничего не поменялось


Так приходит
PHP
1
2
3
4
5
[flags] => 49699
                    [type] => 3
                    [index] => 0
                    [orgtable] => категория
[orgname] => Код_категории

Так если включить в скрипе описанное восстановление
PHP
1
2
3
4
5
6
7
                    [flags] => 49699
                    [type] => 3
                    [ref] => 0
                    [cc] => 0
                    [index] => 0
                    [orgtable] => Категория
                    [orgname] => Код_категории

На левые проперти внимания не обращайте, это из готового объекта цитаты.

В общем поскольку проблема явно имеется и может воспроизводиться в тех или иных условиях, пусть оно так и остается.

Попутно из маны по теме http://dev.mysql.com/doc/refma... ivity.html для местной кбд

Добавлено через 6 минут
Да, имя-то таблицы нормально выдается, как есть. Которое table. Но я не могу его юзать поскольку оно может быть псевдонимом. Узнать реальное оно или нет - никак нельзя. Потому что в документации написано что orgname и orgtable возникают когда name и table представлены как алиасы. На самом деле они всегда возникают.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.10.2013, 08:05
Помогаю со студенческими работами здесь

Ещё раз про асинхронность
Скажите пожалуйста, зачем в данном случае использовать асинхронность, когда и синхронное выполнение даёт такой же результат?То есть консоль...

Еще раз про цветы)
У меня есть 2Д массив данных (нек-рое изображение в цифирях от 0 до Х), как из него сделать ч/б изображение (bmp или jpeg и тд). Я...

еще раз про e-mail
Добрый день Вот какое дело: мне нужно текст, содержащийся в Memo или в ReachEdit отправить по электронной почте. В короткой...

Еще раз, про задание
Доброго времени суток. Подскажите, пожалуйста. Правильно ли я понимаю, что в приведенной задаче печь будет ремонтироваться всегда, потому...

Ещё раз про радиомодули
Задача - нужно связать 20 устройств разбросанных по лесу на расстоянии от 20 до 300 метров друг от друга. Упрощенно - при нажатии кнопки на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru