2016-07-20 3 views
0

Salut je dois faire une demande de MySQL pour obtenir des données où le nom déposé = lettre de $ mais la variable $ lettre peut contenir » mon problème est que j'essaie d'utiliser ce:requête PHP avec chaîne contient des citations

$letter = mysqli_real_escape_string($conn,strtolower($letter)); 
$us = $conn->query("SELECT id FROM singers where trim(LOWER(name)) = '".$letter."'"); 

Mon problème est si la lettre a été $ je suis la légende, après l'exécution de cette ligne, il devient I \ 'm légende ne peut donc pas être trouver dans la base de données parce que, dans la base de données, il est stocké comme je suis la légende comment Je peux résoudre ceci et obtenir le bon résultat.

echo $letter; 
     $letter = mysqli_real_escape_string($conn,strtolower($letter)); 
     echo $letter; 

RÉSULTAT

je suis

i \ 'm

+4

En savoir plus sur les instructions préparées – Jens

+0

Êtes-vous sûr que '$ letter' se trouve dans la base de données? C'est la bonne façon d'échapper aux citations. – Andrew

+0

Je ne fink pas qui va casser votre code. Essayez "sélectionnez .... où nom = $ lettre". Doit fonctionner très bien –

Répondre

1

pourquoi vous avez utilisé

trim et LOWER dans votre column name

"SELECT id FROM singers where trim(LOWER(name)) = '".$letter."'" //why trim and LOWER 

utiliser cette

"SELECT id FROM singers where name = '".$letter."'" 

Essayez aussi cela comme

$letter = mysqli_real_escape_string($conn,strtolower($letter)); 
$sql = "SELECT id FROM singers where name = '".$letter."'"; 
// echo $sql; die; print this and run in phpmyadmin to check 
$us = $conn->query($sql); 
if ($us !== false) { 
echo 'done'; 
} 
else{ die('failed!' . mysqli_error($conn));} 
+0

parce que $ lettre est plus faible et le problème est que « je suis la légende »! = « Je suis \ » légende" est-il un moyen d'échapper " sans ajouter \ – bakrim

+0

pas thats faux. Essayez une fois en enlevant cela – user1234

+0

Ne fonctionne pas je pense parce qu'il ne peut pas trouver "What \ 's Up \' mr Jones" il est stocké comme "What's Up'mr Jones" devrais-je ajouté \ à tous les champs – bakrim

0

enter image description here

enter image description here

il y a une différence entre le champ et la valeur d'où le \ ajouté est le problème