J'utilise MySQLi pour gérer certaines bases de données et je ne comprends pas pourquoi mon code ne fonctionne pas. Avec un nom d'utilisateur de "gooduser" et "goodpass", cela devrait retourner la ligne correcte et cela devrait fonctionner à partir de là. Notez que $ _SESSION ['messages'] est mon outil de suivi des messages. Lors de la sortie des messages, je reçois cette sortie:MySQLi Les paramètres liés de SELECT ne retournent pas une ligne
Num rows: 0
Line 67
Line 77
Il est sauter le tout en boucle parce que les lignes Num est 0. Lorsque vous modifiez l'extrait par la requête de ne pas utiliser params lié, il fonctionne:
// create prepared statement
if ($stmt = $mysqli->prepare('SELECT password FROM login_users WHERE user_name = "gooduser" LIMIT 1')) {
//$stmt->bind_param('s', $username);
//$username = 'gooduser';
$password = md5('goodpass');
Ce retour:
Num rows: 1
Line 67
Line 69
Success!
Line 77
Quelqu'un veut expliquer ce que je fais mal ici? J'essaye de faire un script de connexion simple.
EDIT: Voici la structure de la table:
-- Table structure for table `login_users`
--
CREATE TABLE `login_users` (
`user_id` int(11) NOT NULL auto_increment,
`user_name` varchar(30) NOT NULL default '',
`password` varchar(70) NOT NULL default '',
PRIMARY KEY (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
MISE À JOUR: Grâce à diverses sources, il semble que l'ensemble des fonctionnalités de MySQLi est disponible en v4.1.3, malgré la documentation indiquant v4.1 . Certaines fonctionnalités fonctionnent, mais pas d'autres (comme bind_param). J'ai déjà parlé à mon hôte et je cherche à passer à la dernière version.
faire comme vous dites: \t $ nom d'utilisateur = 'bon utilisateur'; \t $ stmt-> bind_param ('s', $ nom d'utilisateur); Cela renvoie toujours le même que le premier scénario sur mon OP. – Cletus
J'ai changé le mot de passe de connexion, hôte ... et les champs mysql pour travailler avec une table de test en cours j'ai sur mon localhost et j'obtiens la sortie désirée, petite note: s'il vous plaît fermer toutes les conections avant d'appeler la fonction header rien à voir avec le bug, mais a à voir avec de meilleures pratiques) –
La copie exacte-> pâte de ce qui précède renvoie exactement le même que précédemment. En outre, en note, comment puis-je poster du code dans les commentaires? – Cletus