Quelles sont les différences entre backtick et guillemet simple? Puis-je utiliser l'instruction IF dans une requête comme ci-dessus?
-
22-09-2019 - |
Question
Dans le CodeIgniter manuel écrit ce qui suit.
$ this-> db-> select () accepte une deuxième paramètre facultatif. Si vous définissez à FAUX, CodeIgniter ne pas essayer pour protéger vos noms de champs ou de table avec des accents graves. Ceci est utile si vous besoin d'un composé instruction select.
$this->db->select('(SELECT SUM(payments.amount) FROM payments
WHERE payments.invoice_id=4) AS amount_paid', FALSE);
$query = $this->db->get('mytable');
...
Et j'ai le code suivant de une des applications CI .
$this->db->select('slug, type,
IF(`value` = "", `default`, `value`) as `value`', FALSE);
Q1. Quelles sont les différences entre backtick `et guillemet simple?
Q2. Puis-je utiliser l'instruction IF dans une requête comme ci-dessus?
Q3. Qu'est-ce que cela signifie?
IF(`value` = "", `default`, `value`) as `value`
La solution
-
MySQL, citation Noms , tandis que des guillemets simples créent chaînes . Si vous avez une colonne appelée
select
, MySQL jetterait une erreur de syntaxe lorsque vous utilisez ce nom sans accents graves - comme dansSELECT select FROM foo
-. Comme il l'interpréter comme mot-clé qui ne peut se produire là-bas -
IF Fonction peut être utilisé comme une spécification de colonne dans les instructions SELECT. Voir référence MySQL .
-
Cette fonction retourne la valeur de la colonne de
default
, sivalue
est la chaîne vide. Sinon, il renvoie la valeur devalue
elle-même. Le résultat sera appelévalue
. Voir la de référence MySQL pour les détails.