salut à tous!
dites moi est ce que cette écriture est juste:
$x = "select account_id from eqw_accounts where account_type = 'g' and account_lid = $group_info['account_name']";
si cette écriture n'est pas juste, merci de bien vouloir la corriger!!
# Ma version
Posté par Lol Zimmerli (site web personnel, Mastodon) . Évalué à 2.
$x = "SELECT `account_id` from `eqw_accounts` WHERE `account_type` = 'g' AND `account_lid`='".$group_info['account_name']."'";
À part ça, account_lid = $group_info['account_name'], il y a au moins un problème de nommage de variable; c'est un ID ou un NAME?La gelée de coings est une chose à ne pas avaler de travers.
# non
Posté par duaner . Évalué à 1.
- Si tu veux interpoler un élément d'un tableau dans une chaine, tu ne dois pas quoter la clé
- Tu devrais par contre quoter la valeur de account_lid dans ton query si ce n'est pas un entier/double/...
=> ... and account_lid = '$group_info[account_name]'" si tu veux le faire ainsi, sinon peut etre regarder du coté de PDO et des placeholders...
[^] # Re: non
Posté par Raphaël G. (site web personnel) . Évalué à 3.
On apprend a faire du php E_STRICT ici !!!
Quand tu veux ajouter dans une chaîne une variable qui est une entrée de tableau tu dois lui mettre des accolades.
Exemple :
$x = "select account_id from eqw_accounts where account_type = 'g' and account_lid = {$group_info['account_name']}";
Ensuite tu peux aussi pour voir ce que tu fais la quoter avec notion pointé :
$x = 'select account_id from eqw_accounts where account_type = \'g\' and account_lid = '.$group_info['account_name'];
Bon là j'utilise des ' comme délimiteur de chaîne car c'est nettement plus rapide de faire un :
$x = 'quelquechose '.$quelquechose.' quelquechose';
Que :
$x = "quelquechose $quelquechose quelquechose";
[^] # Re: non
Posté par Gyro Gearllose . Évalué à 2.
Exemple :
$x=sprintf ("select account_id from eqw_accounts where account_type = 'g' and account_lid = '%s';", $group_info['account_name']);
C'est la syntaxe que je préfère pour plusieurs raisons :
1) on est sûr du type de variable inséré dans la chaîne de caractères.
2) on peut éventuellement appliquer des fonctions au paramètre (preg_replace, chop, trim, calculs divers)
3) on peut passer plusieurs paramètres d'un seul coup sans vraiment alourdir la syntaxe, et c'est plus lisible...
4) pour débugguer, c'est plus facile, il n'y a que le $x = s à mettre en commentaire pour afficher directement le résultat de la commande.
M'enfin, ce n'est que mon avis, il n'engage que moi.
# oui
Posté par jimee (site web personnel) . Évalué à 2.
Du point de vue mysql (si c'en est) il reste à vérifier que les noms de la table et des champs sont bons (attention aux majuscules), et que le contenu de la variable correspond bien à ce que tu espères : dans le cas où ta variable est vide, la syntaxe devient mauvaise!
Attention également aux injections sql :
Si $group_info['account_name']="0 or 1=1", ta requete va retourner toute ta table... Un conseil : même si le champs account_lid est numérique, mets ta variable entre des quotes, et utilise la fonction mysql_real_escape_string().
$x = "select account_id from eqw_accounts where account_type = 'g' and account_lid = '" . mysql_real_escape_string($group_info['account_name']) . "'";
Voir un exemple plus complet sur http://fr3.php.net/manual/fr/function.mysql-real-escape-stri(...) pour le cas où les magic_quotes sont activées...
# rien!!!
Posté par mimim . Évalué à 1.
[^] # Re: rien!!!
Posté par Lol Zimmerli (site web personnel, Mastodon) . Évalué à 3.
La gelée de coings est une chose à ne pas avaler de travers.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.