PHP/MYSQL une variable dans une requête

Fermé
benoit22 - 21 févr. 2011 à 21:01
Bablon Arnaud Messages postés 74 Date d'inscription jeudi 13 janvier 2011 Statut Contributeur Dernière intervention 9 décembre 2011 - 21 févr. 2011 à 22:57
Bonjour à tous,
Merci de m'accorder un peu de votre temps et de votre indulgence.
J'ai un problème que je pense être assez simple mais je débute et malgré de nombreuses recherches, je n'ai pas encore trouvé.

Voilà, j'ai un formulaire
<form name="monform" method="post" action="cible.php">
j'y déclare une liste déroulante,
avec <SELECT name="choix" size="1">

dans le fichier cible.php, il me semble que je récupère bien la valeur de choix
$choix = $_POST['choix'];
echo "choix " . $choix ."<br/>";
cela m'affiche toto

Mon souci est d'utiliser cette variable pour sélectionner des enregistrements dans une table

//Fonctionne et affiche les valeurs
//$req = $bdd->prepare('SELECT champ2 FROM matable WHERE champs1 = \'toto\'');

//Ne renvoie pas de messages d'erreur mais n'affiche plus rien
$req = $bdd->prepare('SELECT champs2 FROM matable WHERE champs1 = ?');
$req->execute(array($_POST['choix']));

J'ai essayé avec
$req = $bdd->prepare('SELECT champs2 FROM matable WHERE champs1 LIKE ?');
$req->execute(array($_POST['choix']));
Cela ne change rien

Je précise que champs1 est de type varchar(255)
S'agit d'un problème de type différent qui rendrait la comparaison toujours négative ?
Faut-il employer la fonction CAST ou strcmp dans le texte de la requête. ?
Ou bien est-ce un problème de ' ou de " employé mal à propos ?
Merci encore de vos conseils
A voir également:

1 réponse

Bablon Arnaud Messages postés 74 Date d'inscription jeudi 13 janvier 2011 Statut Contributeur Dernière intervention 9 décembre 2011 11
21 févr. 2011 à 22:57
je sais pas si mon post est bien arrivé (je le vois pas quand je rafraichis je ré envois)

je te propose une soluce pour le LIKE (ca marche très bien chez moi)
<?php
$dbh = new  PDO("mysql:dbname=dev;host=127.0.0.1","root","");
$sth = $dbh->prepare('SELECT contact_id
    FROM cours_contact
    WHERE contact_email LIKE :email');
$sth->execute(array(':email'=>'%dd%'));
$red = $sth->fetchAll();
var_dump($red);
?>

(dans ton post tu ne parles pas du fetchAll)
0