Lorsque j'essaie d'exécuter mon code, je reçois l'erreur: mysqli_stmt :: bind_param (): Nombre de variables ne correspond pas au nombre de paramètres dans la déclaration préparée
mon objectif: extraire des informations de la table de base de données en filtrant une colonne souhaitée et ajoutez-les à un tableau. P>
J'ai déjà cherché des réponses sur la même erreur, mais les solutions fournies (telles que l'utilisation '?' Sont déjà implémentées) p>
mon dboperation.php p>
3 Réponses :
Il vous suffit de lier un paramètre, car vous n'avez qu'un seul espace réservé dans votre requête:
$stmt->bind_param("s", $login_token);
J'ai essayé ceci (aurais dû ajouter le post, désolé). Dans ce cas, le résultat $ vient de finir par Faux et me donne le message "Erreur"
Vous devez vous attaquer avant d'exécuter. Vous êtes contraignant après l'exécution qui ne fonctionne pas.
while($row = $stmt->fetch()) { $arr = array(); $arr['id'] = $row['id']; $arr['first_name'] = $row['first_name']; $arr['last_name'] = $row['last_name']; $arr['login_token'] = $row['login_token']; $arr['time_started'] = $row['time_started']; $arr['time_ended'] = $row['time_ended']; $arr['todays_worktime'] = $row['todays_worktime']; array_push($arrs, $arr); }
Cela a-t-il changé et maintenant, j'ai une erreur différente. Il est indiqué que mon identifiant, son nom et tous les autres varuables sont indéfinis.
Ahh, vous avez manqué le $ rangée code>. Mis à jour, veuillez vérifier maintenant!
Avec cette solution, il dit: Variable non définie: Login_Token; (Celui dans api.php; $ réponse ["ARRS '] = $ DB-> getpersonchanganges_made ($ login_token);)
Êtes-vous sûr de définir $ login_token code> avant d'appeler
$ db-> getpersonchanges_made ($ login_token); code>?
MH2K9, je suis ... pas sûr désolé. Je pensais que je n'ai besoin que de faire autant que moi (mises à jour le code dans le message d'origine), j'utilise ensuite simplement Postman pour publier une valeur que je veux tester. En ce moment, il est en quelque sorte de retour d'un tableau vide mais je reçois aussi une erreur en même temps disant que mon login_Token est indéfini (et pointe vers la ligne dans API.PHP $ Response ['ARRS'] = $ DB-> getpersonchangees_made ( $ login_token);
Je vous ai vu des codes et il est clair que vous n'avez pas défini $ login_Token code>. Et il semble
$ login_token code> provient d'une demande postale. Donc, vous pouvez essayer en changeant la ligne
$ réponse ['ARRS'] = $ DB-> getpersonchanges_made ($ login_token); code> à
$ réponse ['getpersonchanganes_made ($ _Post ['login_token']); code>
Le progrès! En ce moment, je reçois le bon nombre de personnes dans le tableau, mais toutes leurs valeurs sont définies sur NULL (par exemple: "ID": NULL)
Vous voudrez peut-être utiliser bind_result code> après avoir exécuté l'instruction préparée - attribuant les différentes colonnes à mesure que les variables seront ensuite récupérées. L'utilisation de l'espace réservé unique signifie que vous n'avez besoin que de lier une variable comme paramètre d'entrée que déjà mentionné.
function getPersonChanges_made( $login_token=false ){
$sql='select id, first_name, last_name, login_token, time_started, time_ended, todays_worktime from changes_made where login_token = ?';
$stmt = $this->con->prepare( $sql );
if( $stmt && $login_token ){
$stmt->bind_param('s',$login_token);
$res=$stmt->execute();
if( $res ){
$stmt->store_result();
$stmt->bind_result( $id, $first_name, $last_name, $login_token, $time_started, $time_ended, $todays_worktime );
$arrs=[];
while( $stmt->fetch() ){
$arr=[];
$arr['id'] = $id;
$arr['first_name'] = $first_name;
$arr['last_name'] = $last_name;
$arr['login_token'] = $login_token;
$arr['time_started'] = $time_started;
$arr['time_ended'] = $time_ended;
$arr['todays_worktime'] = $todays_worktime;
array_push($arrs, $arr);
}
$stmt->free_result();
$stmt->close();
return $arrs;
}
}
return false;
}
Avec cette solution, il dit: Variable non définie: Login_Token; (Celui dans api.php; $ réponse ["ARRS '] = $ DB-> getpersonchanganges_made ($ login_token);)
Dans ce cas, votre code d'origine aurait subi la même erreur?
Pourquoi tu liens tous? Vous n'utilisez qu'une entrée utilisateur dans votre clause où la clause utilise donc à la fois dans la liaison
Est-ce que les modifications apportées à Nacho et que vous avez recommandées, cependant, le résultat $ se termine simplement par Faux et et je n'obtiens rien. (Je teste avec "Postman")
Avez-vous déjà défini
$ login_Token code>? On dirait qu'il devrait être
$ _ post ['login_token'] code> ou
$ login_token = $ _post ['login_token'] code>. (Cela est également hors tension de la poste, vous avez 4 réponse qui a déjà abordé cette question)