10. Кесте өрістерінің тізімін алу
Енді сіз мәселені нақты шеше бастауға болады. Кесте өрістерінің тізімін қалай алуға болады? Өте оңай. Бұл жағдайда PHP-дің жеке командасы бар - Mysql_list_fields.
10.1. Mysql_list_fields синтаксисі
mysql_list_fields ресурсы (
деректер базасының_атының,
кесте_аты
[, link_identifier ресурсы])
Бұл функция кесте өрістерінің тізімін кесте_атауы мәліметтер базасындағы мәліметтер_атауы бойынша қайтарады. Бізге мәліметтер базасын таңдаудың қажеті жоқ болып шықты, бірақ ол кейінірек ыңғайлы болады. Көріп отырғаныңыздай, бұл функцияның нәтижесі ресурстардың айнымалысы болып табылады. Яғни, бұл дәл біз алғымыз келген нәрсе емес. Бұл кестедегі өрістер туралы, оның атаулары, түрлері және жалаушалары туралы ақпарат алу үшін қолдануға болатын сілтеме.
Mysql_field_name функциясы сұраудан қайтарылған өрістің атын қайтарады. Mysql_field_len функциясы өрістің ұзындығын қайтарады. Mysql_field_type функциясы өрістің түрін, ал Mysql_field_flags функциясы өріс жалауларының кеңістікпен бөлінген тізімін береді. Өріс типтері int, real, string, blob және т.б. Жалаушалар_нөлдік, бастапқы_кілт, ерекше_кілт, блок, болуы мүмкін
авто_инкремент және т.б.
Осы командалардың барлығының синтаксисі бірдей:
жол Mysql_field_name (ресурс нәтижесі, бүтін өріс_offset)
жол Mysql_field_type (нәтиже ресурсы, integer field_offset)
жол Mysql_field_flags (нәтиже ресурсы, integer field_offset)
жол Mysql_field_len (нәтиже ресурсы, integer field_offset)
Мұнда нәтиже сұрау нәтижесінің идентификаторы болып табылады (мысалы, Mysql_list_fields немесе Mysql_query функциялары жіберген сұраныс (бұл туралы кейінірек)), ал field_offset - нәтижедегі өрістің реттік нөмірі.
Жалпы, Mysql_list_fields немесе Mysql_query типтерінің қай функциялары кесте, дәлірек айтсақ, оған нұсқау болып табылады. Осы кестеден белгілі бір мәндерді алу үшін осы кестені жол бойынша оқитын арнайы функцияларды қолдану қажет. Бұл функцияларға Mysql_field_name және т.б. Сұрау нәтижелері кестесіндегі барлық жолдар бойынша қайталау үшін, сіз осы кестедегі жолдар санын білуіңіз керек. Mysql_num_rows командасы (нәтиже ресурсы) нәтижелер жиынындағы жолдар санын қайтарады
нәтиже.
Енді жәдігерлер кестесінен өрістер тізімін алуға тырысайық (экспонаттар жинағы).
$ conn \u003d Mysql_connect (
«localhost», «nina», «123»)
немесе өлу ( «Орнату мүмкін емес
байланыс: «... Mysql_error ());
жаңғырық «Байланыс орнатылды»;
Mysql_select_db («кітап»);
$ list_f \u003d Mysql_list_fields (
«кітап», «артефакттар», $ conn);
$ n \u003d Mysql_num_fields ($ list_f);
үшін ($ i \u003d 0; $ i< $n ; $i ++){
$ flags_str \u003d Mysql_field_flags (
$ list_f, $ i);
жаңғырық »
Өрістің атауы: «. $ Name_f;
жаңғырық »
Өріс түрі: «. $ Type;
жаңғырық »
Өрістің ұзындығы: «. $ Len;
жаңғырық "
Өріс жалаулары: «.
$ flags_str. «
" ;
}
?>
Нәтижесінде сіз келесі нәрсені алуыңыз керек (егер кестеде тек екі өріс болса):
Өріс атауы: идентификатор
Өріс түрі: int
Өрістің ұзындығы: 11
Өріс жалаулары:
автоматты түрде_негізгі_жаңа_кілт
Өрістің атауы: тақырып
Өріс түрі: жол
Өрістің ұзындығы: 255
Өріс жалаулары:
Өрістер тізімін html түрінде көрсету
Енді біз алдыңғы мысалды сәл түзетеміз. Біз өріс туралы ақпаратты көрсетіп қана қоймай, оны html пішінді элементінде көрсетеміз. Сонымен, біз BLOB типінің элементтерін мәтіндік аймаққа аударамыз (біз мәтін мәтінімен құрылған сипаттама өрісі BLOB түріне ие болатынын ескеріңіз), біз мәтін енгізу жолдарында сандар мен жолдарды көрсетеміз , және автоинкремент белгісі бар элемент мүлдем көрсетілмейді, өйткені оның мәні автоматты түрде орнатылады.
Мұның бәрі қарапайым түрде шешілуі мүмкін, тек жалаулар тізімінен auto_increment жалауын таңдауды қоспағанда. Мұны істеу үшін сізге жарылыс функциясын қолдану қажет.
Синтаксисті жару:
массив жарылуы (жолды бөлгіш, жол тізбегі [, int шегі])
Бұл функция жолдық жолды бөлгіштің көмегімен бөліктерге бөледі және алынған жолдардың жиымын қайтарады.
Біздің жағдайда бөлгіш ретінде «» кеңістікті, ал бөлудің бастапқы көзі ретінде өріс жалаушаларының жолын алуымыз керек.
Сонымен, Артефакттар кестесіне мәліметтерді енгізу формасын құрайық:
$ conn \u003d Mysql_connect («localhost», «nina», «123»);
// байланыс орнату
$ database \u003d «book»;
$ table_name \u003d «Артефактілер»;
Mysql_select_db ($ мәліметтер базасы); // үшін мәліметтер базасын таңдаңыз
// жұмыс
// нәтижедегі жолдар саны
// алдыңғы сұраныс (яғни қанша
// Артефакттар кестесіндегі өрістер)
жаңғырық "
Начало формы
" ;
// мәліметтерді енгізу үшін форма жасаңыз
жаңғырық "
Достарыңызбен бөлісу: |