2010-01-23 8 views
3

Dans le codeigniter manual écrit ce qui suit.Quelles sont les différences entre backtick et guillemets simples? Puis-je utiliser une instruction IF dans une requête comme ci-dessus?

$ this-> db-> select() accepte un second paramètre optionnel . Si vous définissez à FALSE, CodeIgniter n'essaiera pas de protéger vos noms de champ ou de table avec des accolades. Ceci est utile si vous avez besoin d'une instruction select composée.

$this->db->select('(SELECT SUM(payments.amount) FROM payments 
WHERE payments.invoice_id=4) AS amount_paid', FALSE); 
$query = $this->db->get('mytable'); 
... 

et moi avons le code suivant de one of CI applications.

$this->db->select('slug, type, 
IF(`value` = "", `default`, `value`) as `value`', FALSE); 

Q1. Quelles sont les différences entre backtick `et quote simple '?

Q2. Puis-je utiliser une instruction IF dans une requête comme ci-dessus?

Q3. Qu'est-ce que ça veut dire?

IF(`value` = "", `default`, `value`) as `value` 
+0

Dans votre question 1 voulez-vous dire back-tick plutôt que backslash? –

+0

backtick 'et guillemets simples '. – shin

+0

Ha Je pensais avoir reconnu cette requête :-p –

Répondre

14
  1. MySQL, noms citent des accents graves, alors que des guillemets simples créent chaînes. Si vous avez une colonne appelée select, MySQL lancerait une erreur de syntaxe en utilisant ce nom sans les guillemets - comme dans SELECT select FROM foo - car il l'interpréterait comme un mot-clé qui peut ne pas s'y trouver.

  2. Cette fonction IF peut être utilisée comme spécification de colonne dans les instructions SELECT. Voir le MySQL reference. Cette fonction renvoie la valeur de la colonne default si la chaîne value est la chaîne vide. Sinon, il renvoie la valeur de value lui-même. Le résultat sera appelé value. Voir le MySQL reference pour plus de détails.

+0

@David Merci. Le manuel MySQL est difficile à lire (pour moi). Pouvez-vous recommander un bon livre à étudier? – shin

+0

@shin: alors que je n'ai jamais trouvé le besoin de lire plus que la référence développeur, j'ai trouvé cette question: http://stackoverflow.com/questions/1935813/recommend-mysql-book-for-developer –