Լրացուցիչ Բլոկների Տեսակներ (EBT) - Դասավորության Կառուցողի նոր փորձառություն❗

Լրացուցիչ Բլոկների Տեսակներ (EBT) - ձևավորված, կարգավորելի բլոկների տեսակներ՝ սլայդշոուներ, ներդիրներ, քարտեր, բացվող ցանկեր և շատ ուրիշներ։ Ներառված կարգավորումներ՝ ֆոնի, DOM տուփի, JavaScript փլագինների համար։ Փորձեք դասավորությունների կառուցման ապագան արդեն այսօր։

EBT մոդուլների ցուցադրական տարբերակներ Ներբեռնել EBT մոդուլները

❗Լրացուցիչ Պարբերությունների Տեսակներ (EPT) - Պարբերությունների նոր փորձառություն

Լրացուցիչ պարբերության տեսակներ (EPT) - անալոգիական պարբերության վրա հիմնված մոդուլների հավաքակազմ։

EPT մոդուլների ցուցադրական տարբերակներ Ներբեռնել EPT մոդուլները

Scroll

Աշխատանք տվյալների բազայի հետ Drupal 7-ում - Դաս 3 - Ստատիկ հարցումներ (SELECT)

12/05/2025, by Ivan

Drupal-ում հարցման ամենընդհանուր ձևը ստատիկ հարցումն է։ Ստատիկ հարցումը բառացիորեն փոխանցվում է տվյալների բազային։ Միայն ընտրության հարցումը (select) կարող է լինել ստատիկ։

Ստատիկ հարցումներ պետք է օգտագործել միայն շատ պարզ դեպքերում։ Եթե անհրաժեշտ է գրավել բարդ հարցում, դինամիկ ստեղծվող կամ փոփոխվող հարցում՝ օգտագործեք դինամիկ հարցումներ։

Պարզ ճանապարհ ստատիկ հարցում կատարելու՝ մեթոդի միջոցով՝

<?php
$result = $conn->query("SELECT nid, title FROM {node}");
?>

Նախընտրելի է օգտագործել գործընթացային փաթեթավորիչը՝

<?php
$result = db_query("SELECT nid, title FROM {node}");
?>

Վերոնշյալ db_query() կանչը համարժեք է հետևյալ կառուցվածքին՝

<?php
$result = Database::getConnection()->query("SELECT nid, title FROM {node}");
?>

Եկեք հասկանանք՝ ինչու է db_query()-ի օգտագործումը ավելի լավ, քան ուղղակի Database օբյեկտին դիմելը։

db_query() ընդունում է երեք արգումենտ։ Առաջինը հարցման տեքստն է՝ օգտագործելով փոխարինողներ (placeholders) և բոլոր աղյուսակները {} փակագծերի մեջ։ Երկրորդը՝ փոխարինողների զանգվածն է։ Երրորդը՝ (ընտրովի) հարցման կատարման պարամետրերի զանգվածն է։

Նախածանցում

Ստատիկ հարցումներում բոլոր աղյուսակները պետք է փակագծվեն {}-ով։ Սա թույլ է տալիս օգտագործել նախածանցներ աղյուսակների անուններին։ Նախածանցները թույլ են տալիս տեղակայել մի քանի կայք նույն բազայում՝ օգտագործելով տարբեր նախածանցներ, օրինակ՝ "site1_", "site2_"։

Փոխարինողներ

Փոխարինողները նշվում են տեղերում, որտեղ պետք է արժեքներ մուտքագրվեն։ Այս մեթոդով մենք թույլ ենք տալիս, որ տվյալների բազան տարբերակում կատարի SQL շարահյուսության և օգտագործողի կողմից տրամադրված արժեքների միջև՝ կանխելով SQL ներմուծումները։

<?php
$result = db_query("SELECT nid, title FROM {node} WHERE created > :created", array(
  ':created' => REQUEST_TIME - 3600,
));
?>

Վերևում՝ հարցում, որը կընտրի բոլոր նոդերը, որոնք ստեղծվել են մեկ ժամ առաջ։ Փոխարինող :created-ը կփոխարինվի REQUEST_TIME - 3600 արժեքով։ Կարելի է ունենալ ցանկացած քանակի փոխարինողներ, բայց անունները պետք է լինեն եզակի։

Փոխարինողների զանգվածը կարող է լինել ներգծված կամ նախապես սահմանված։ Զանգվածի պարունակության հերթականությունը կարևոր չէ։ "db_"-ով սկսվող փոխարինող անունները ամրագրված են համակարգի կողմից և չեն կարող օգտագործվել։

Ուշադրություն դարձրեք՝ պետք է արդյոք փոխարինողը փակագծել՝ կախված նրա տեսակից։ Օրինակ՝ տողային արժեքները փակագծվում են, իսկ թվայինները՝ ոչ։

<?php
// ՍԽԱԼ է.
$result = db_query("SELECT nid, title FROM {node} WHERE type = ':type'", array(
  ':type' => 'page',
));

// ՃԻՇՏ է.
$result = db_query("SELECT nid, title FROM {node} WHERE type = :type", array(
  ':type' => 'page',
));
?>

Փոխարինողներ չեն կարող օգտագործվել աղյուսակների կամ սյունակների անունների համար։ Դրանք միայն փոխարինում են տեքստային կամ թվային արժեքներ։

Փոխարինողների զանգվածներ

Drupal-ի Database շերտը ներառում է փոխարինողների հատուկ հնարավորություն։ Եթե փոխարինողները փոխանցվում են զանգվածով, ապա դրանք ավտոմատ կերպով վերափոխվում են ստորակետով բաժանված ցուցակի։ Այսինքն՝ դուք չպետք է անհանգստանաք՝ քանի փոխարինող պետք է ավելացնեք։ Օրինակ՝

<?php
db_query("SELECT * FROM {node} WHERE nid IN (:nids)", array(':nids' => array(13, 42, 144)));

// Ձեռքով փոխարինողների ցուցակ օգտագործելով.
db_query("SELECT * FROM {node} WHERE nid IN (:nids_1, :nids_2, :nids_3)", array(
  ':nids_1' => 13,
  ':nids_2' => 42,
  ':nids_3' => 144,
));
// Հավասար է.
db_query("SELECT * FROM {node} WHERE nid IN (13, 42, 144)");
?>

Հարցման պարամետրեր

db_query()-ի երրորդ արգումենտը պարամետրերի զանգված է, որը կառավարում է՝ ինչպես պետք է հարցումը կատարվի։ Սովորաբար օգտագործվում են երկու պարամետր՝ "target" և "fetch"։ Մնացածը ներքին օգտագործման համար են։
"target" բանալին որոշում է՝ որ սերվերին հարցումը պետք է կատարվի։ "default" է լռելյայն արժեքը։ Միակ այլ կիրառելի արժեքը "slave" է, որը նշանակում է հարցումը կատարվում է սերվերի կրկնօրինակում։
"fetch" բանալին որոշում է՝ ինչպես արդյունքը կվերադարձվի։ Օրինակ՝ PDO::FETCH_OBJ, PDO::FETCH_ASSOC, PDO::FETCH_NUM, PDO::FETCH_BOTH կամ ինչ-որ դասի անուն։ Վերջին դեպքում արդյունքը կվերադարձվի որպես այդ դասի օբյեկտ։
Վարքագիծը որոշվում է PDO-ի միջոցով՝

  1. PDO::FETCH_OBJ – արդյունքները որպես օբյեկտ (stdClass):
  2. PDO::FETCH_ASSOC – որպես ասոցիատիվ զանգված:
  3. PDO::FETCH_NUM – որպես համարակալված զանգված:
  4. PDO::FETCH_BOTH – և՛ համարակալված, և՛ ասոցիատիվ զանգված:

Այցելեք http://php.net/manual/en/pdostatement.fetch.php։ Լռելյայն արժեքն է PDO::FETCH_OBJ և այն կարող եք օգտագործել եթե հատուկ նախապատվություն չունեք։

Հաջորդ օրինակում կատարվում է հարցում "slave" սերվերին, իսկ արդյունքը ստացվում է ասոցիատիվ զանգվածի ձևով։

<?php
$result = db_query("SELECT nid, title FROM {node}", array(), array(
  'target' => 'slave',
  'fetch' => PDO::FETCH_ASSOC,
));
?>