WordPress: clasa wpdb (II)


Titlul subliniază că am mai abordat subiectul cândva… la începutul lui 2009. După 2 ani şi ceva lucrurile nu s-au schimbat foarte mult. Doar că SmashingMagazine a publicat acum vreo săptămână un articol complex şi pertinent care merită să fie semnalat pentru fanii WordPress. Iar titlul spune totul: WordPress Essentials: Interacting With The WordPress Database. În timp ce sursa principală de documentaţie rămâne pagina Class Reference/wpdb din Codexul WordPress, articolul lui Daniel Pataki va deveni rapid – sunt sigur – un text de referinţă la acest capitol.

Doresc să nu mă repet, vizavi de cele scrise în 2009, aşa că rezum articolul de pe SmashingMagazine pentru cei care l-ar prefera fiind mai proaspăt, mai complex, iar engleza nu îi sperie. Astfel autorul porneşte de la un exemplu concret, o interogare făcută cu $wpdb->get_results, studiind apoi “anatomia” rezultatului. Fiind prinsă ideea de bază, facem cunoştinţă cu variantele de interogare:

  • get_results – varianta generică, pentru parcurgerea mai multor rânduri (înregistrări) dintr-o tabelă WordPress, cu mai multe câmpuri
  • get_row – pentru atunci când solicităm o singură înregistrare dintr-o tabelă
  • get_col – invers, un singur câmp dar peste mai multe înregistrări
  • get_var – un singur câmp dintr-o singură înregistrare

Mai apoi Daniel oferă exemple pentru inserare, actualizare şi ştergere de date. Ceea ce tratează în plus faţă de articolul meu din trecut este protecţia împotriva atacurilor (SQL injection) prin metoda prepare(), care dă liniştea atunci când datele sunt preluate din url sau dintr-un formular de la utilizator.

$sql = $wpdb->prepare( 'query' [, value_parameter, value_parameter ... ] );

Mai redau un exemplu, mai complex, evidenţiind $wpdb->insert_id, despre care nu cred că ştiam până acum că redă ID-ul înregistrării tocmai inserate.

$sql = $wpdb->prepare( "INSERT INTO $wpdb->postmeta (post_id, meta_key, meta_value ) VALUES ( %d, %s, %d )", 3342, 'post_views', 2290 )
$wpdb->query($sql);
$meta_id = $wpdb->insert_id;

Articolul continuă cu un exemplu ce foloseşte o tabelă nouă. Eu mă opresc aici. La final sunt nişte concluzii pe care e bine să le citiţi. Eu aş completa cu una singură: nu folosiţi clasa wpdb decât atunci când e obligatoriu. WordPress pune la dispoziţie tot felul de funcţii pentru a insera articole sau utilizatori (ca să dau două exemple) şi aşa e mai sigur decât a merge pe cod propriu (când WordPress îşi va actualiza ceva prin structuri, funcţiile ce le oferă vor fi actualizate cu siguranţă). Mai important devine aşa ceva la ştergere: dacă faceţi o simplă ştergere din wp_users nu ajunge… mai trebuie şterse informaţii şi din alte tabele (precum wp_usermeta). Mai bine se foloseşte wp_delete_user().


Apreciază articolul:

1 stea2 stea3 stea4 stea5 stea (Neevaluat încă)
Loading...Loading...

0 comentarii


Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile necesare sunt marcate *