0
votes

Laravel DB :: Sélectionner les retours Erreur générale: 2031

Laravel dB :: Sélectionnez Code> Retours

Erreur générale: 2031 P> blockQuote>

On dirait que des guillemets ne sont pas ajoutés à la déclaration et il essaie d'exécuter la déclaration comme celle-ci: p> xxx pré>

Le code ressemble à ceci: P>

$sql = 'SELECT id FROM users where email="email@email.com"';


0 commentaires

3 Réponses :


2
votes

Je vous recommande de lire les Sélectionnez Docs de Laravel Query Builder.

Le constructeur de requêtes fournit une API complète pour faciliter la tâche et plus sûre. Votre requête ressemblerait à: xxx

edit

Le problème est que vous essayez de passer un paramètre nommé, Mais à l'intérieur de la chaîne, vous ne l'avez pas nommé.

Comme l'exemple de DOC montre: xxx

Votre requête doit ressembler à: < Pré> xxx


2 commentaires

Même plus simple, cela peut être coupé jusqu'à où ("email", $ email) . L'opérateur n'est nécessaire que si vous n'utilisez pas = .


Je pense que cela clarifie les problèmes. Basé aussi sur certains autres conseils que j'essaye d'utiliser Eloquent dans la mesure du possible. Mais DB SELECTS peut être aussi parfois très utile. Merci!



1
votes

@MTHRSJ a correctement identifié une meilleure solution dans votre particulier de requête em>.

Votre problème sous-jacent avec le dB :: Select code> appel est que vous utilisez non Nommé d'espaces réservés ? code> en le passant nommé de données nommées. p>

Ceci devrait fonctionner: P>

$sql = 'SELECT id FROM users where email=:email';
$results = DB::select($sql, ['email' => $email]);


0 commentaires

1
votes

Si vous avez la configuration des modèles, vous pouvez également appeler le DB à l'aide de votre modèle utilisateur:

$user = User::select('id')->where('email', $email)->get();


2 commentaires

Eloquant et le DB Façade Utilisez PDO, mais ceci est un bon point - en général, utilisez l'éloquent dans la mesure du possible.


C'est utile. Merci.