Tableau de conversion de chaîne de caractères d'erreur
J'ai une requête qui est tirant une liste d'Id. Ces Identifiants sont dans un tableau et j'ai besoin de chercher une autre table avec ces Identifiants. J'ai essayé à l'aide d'imploser à faire de ces Id d'une chaîne que je pourrais utiliser dans une clause where, mais je reçois ce message d'erreur.
Mon code actuel est:
$query = $this->db->query('
SELECT *
FROM system_scoperights
WHERE user = '. $this->session->userdata('username') .'
');
foreach ($query->result() as $row) {
$scope = $row->site;
$data[] = $scope;
}
$dataScope[] = $data;
$idList = implode(',', $dataScope); <---- Error Line
$where = 'WHERE scope_scopes.sc_ID IN '. $idList .'';
J'ai essayé différentes choses que j'ai trouvé sur des forums comme:
$idList = implode(',', array_values($dataScope));
et
$idList = implode(',', join($dataScope));
mais aucun de ces travaux. (Je n'ai jamais entendu parler de la fonction join)
Merci d'avance pour l'aide.
Quelle est l'erreur de dire?
Je ne pense pas qu'il y est une exigence pour le " à la fin de la requête mysql - juste la fin de la chaîne de la requête après la concaténation de chaîne! +1 pour le style de la chaîne de requête si, me likey 😉
Je sais que vous n'avez pas besoin de les deux ' a la fin j'aime juste les mettre, il cause, il me semble plus organisé pour moi.
Le message d'erreur indique "Tableau de conversion de chaîne de caractères d'erreur"
Je ne pense pas qu'il y est une exigence pour le " à la fin de la requête mysql - juste la fin de la chaîne de la requête après la concaténation de chaîne! +1 pour le style de la chaîne de requête si, me likey 😉
Je sais que vous n'avez pas besoin de les deux ' a la fin j'aime juste les mettre, il cause, il me semble plus organisé pour moi.
Le message d'erreur indique "Tableau de conversion de chaîne de caractères d'erreur"
OriginalL'auteur Dylan Buth | 2012-07-16
Vous devez vous connecter pour publier un commentaire.
mais
donc
$dataScope
a un tableau à l'intérieur du tableau.implode
travaille uniquement sur un niveau, de sorte que pourquoi vous obtenez cette erreur.Vous devriez noter que ceci est possible en SQL:
qui permettrait d'éliminer la totalité des besoins de ce code.
Qui est:
Vrai, j'ai tapé
*
dans la précipitation.Merci. Je vais le marquer comme réponse quand il permet à moi aussi.
OriginalL'auteur Jay
Je suis partiellement d'accord avec Jay réponse...il suffit de supprimer la ligne:
et l'utilisation de la
$data
variable directement puisque c'est déjà dans un tableau:Cependant, vous devriez également utiliser ( et ) dans votre clause where:
À l'aide de sous-requêtes dans votre où l'une des clauses, alors même qu'ils ont leur place à la fois, peut coûter beaucoup de frais généraux, en particulier à l'aide de 'SELECT *'. Ne jamais demander de plus que vous avez besoin à partir de votre base de données les tables 🙂
OriginalL'auteur lerxstrulz