Backticks (`) vs. Ghilimele Simple (') în Declarații SQL - Diferențe și Utilizare
Am acest cod care este parțial afișat aici pentru concizie:
global $wpdb;
// creează tabelul jwp_bids în baza de date dacă nu există
$table = $wpdb->prefix . "jwp_bids";
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE IF NOT EXISTS $table (
`id` mediumint(9) NOT NULL AUTO_INCREMENT,
`bid_amt` text NOT NULL,
Când am scris inițial codul, am folosit '
în paranteze și codul nu a funcționat.
Am schimbat apoi Ghilimeaua Simplă cu un Backtick și codul a rulat perfect.
Poate cineva să explice:
- Care este termenul corect pentru aceste ghilimele neobișnuite :)
- De ce se folosesc în loc de ' ?
- Este relevant doar pentru MySQL? WP? PHP?
- Unde pot găsi o referință tehnică pentru acest gen de lucruri ca să nu vă deranjez pe voi?

Accentele grave și ghilimelele obișnuite (atât simple cât și duble) au semnificații distincte în SQL. Ghilimelele indică un șir literal, în timp ce accentele grave sunt identificatori citați. Acest lucru nu este specific WordPress, ci mai degrabă o metodă generală în SQL de a cita coloane sau tabele.
De exemplu, imaginați-vă că executați o interogare care compară două coloane:
SELECT * FROM wp_posts WHERE post_name = post_title
Dacă comparați cu ghilimele simple ('post_name' = 'post_title'
), acest lucru ar compara șirurile literale, care nu sunt niciodată egale. Cu toate acestea, cu accente grave, s-ar referi la coloană.
De ce să folosiți accente grave? Dacă o coloană se numește la fel ca un cuvânt rezervat în SQL sau conține un spațiu, trebuie să o citați. De exemplu, dacă ați avea o coloană numită count
, ar trebui să o citați de fiecare dată când vă referiți la ea, deoarece COUNT()
este o funcție (și, prin urmare, un cuvânt rezervat) în MySQL.
Consultați și https://dba.stackexchange.com/questions/23129/benefits-of-using-backtick-in-mysql-queries

"Dacă compari cu ghilimele simple ('post_title' = 'post_title') aceasta ar compara șirurile de caractere literale, care niciodată nu sunt egale." De fapt, ele par destul de egale. Poate voiai să spui 'post_name' = 'post_title'?
