Backtick (`) al posto degli apici singoli (') in un'istruzione SQL?
Ho questo codice mostrato parzialmente per brevità:
global $wpdb;
// crea jwp_bids nel database se non esiste
$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,
Quando ho scritto originariamente il codice, ho usato '
tra le parentesi e il codice non funzionava.
Poi ho cambiato gli apici singoli con i backtick e il codice ha funzionato perfettamente.
Qualcuno potrebbe spiegare:
- Qual è il termine corretto per questi strani simboli :)
- Perché vengono usati invece di ' ?
- Questo vale solo per MySQL? WordPress? PHP?
- Dove posso trovare un riferimento tecnico per queste cose così non devo disturbare voi gentili persone?

I backtick e le virgolette standard (sia singole che doppie) hanno significati distinti in SQL. Le virgolette indicano una stringa letterale, mentre i backtick sono identificatori quotati. Questo non è specifico di WordPress, ma è un modo generale in SQL per quotare colonne o tabelle.
Ad esempio, immagina di eseguire una query che confronta due colonne:
SELECT * FROM wp_posts WHERE post_name = post_title
Se confronti con le virgolette singole ('post_name' = 'post_title'
) questo confronta le stringhe letterali, che non saranno mai uguali. Tuttavia, con i backtick, si riferisce alle colonne.
Perché usare i backtick? Se una colonna ha lo stesso nome di una parola riservata in SQL, o contiene spazi, devi quotarla. Ad esempio, se avessi una colonna chiamata count
, dovresti quotarla ogni volta che la richiami, poiché COUNT()
è una funzione (e quindi una parola riservata) in MySQL.
Vedi anche https://dba.stackexchange.com/questions/23129/benefits-of-using-backtick-in-mysql-queries

"Se confronti con apici singoli ('post_title' = 'post_title') questo confronta le stringhe letterali, che non sono mai uguali." In realtà sembrano piuttosto uguali. Forse intendevi dire 'post_name' = 'post_title'?
