Backticks (`) vs. Ghilimele Simple (') în Declarații SQL - Diferențe și Utilizare

5 ian. 2017, 00:33:46
Vizualizări: 14.2K
Voturi: 3

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?
sql
3
Comentarii

Ce se întâmplă dacă omiți complet backtick-urile, rulează totuși? Sunt destul de sigur că aceasta este o nuanță specifică MySQL și are legătură cu interpretarea numelor de coloane ca șiruri de caractere (când folosești ghilimele simple) în loc să le identifice drept coloane (folosind backtick-uri sau fără nimic).

Howdy_McGee Howdy_McGee
5 ian. 2017 00:40:42

O să testez să văd. Care este cea mai bună resursă de referință pentru MySQL unde astfel de detalii sunt explicate?

James James
5 ian. 2017 00:55:48

Deci funcționează fără backtick-uri. Care este o referință tehnică bună pentru astfel de detalii?

James James
5 ian. 2017 01:49:16
Toate răspunsurile la întrebare 1
2

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

5 ian. 2017 03:44:04
Comentarii

"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'?

Frhay Frhay
25 iun. 2018 19:45:43

Accentele grave nu sunt o metodă standard de a cita coloane sau tabele în SQL. Ele sunt specifice MySQL.

Juan Cespedes Juan Cespedes
25 oct. 2024 12:29:24