<?php
session_start();
if (!array_key_exists('id', $_SESSION)) {
header('Location: connexion.php');
} else {
require('shared.php');
$stmt = $bdd->prepare('SELECT * FROM utilisateurs WHERE id = :id');
$stmt->bindParam('id', $_SESSION['id'], PDO::PARAM_INT);
$stmt->execute();
$user = $stmt->fetch();
echo 'Bienvenue ', htmlspecialchars($user['login'], ENT_NOQUOTES);
}
J'aimerais comprendre pourquoi on a utilisé ici bindParam et non bindValue ? J'ai cru comprendre qu'il fallait uniquement utiliser bindParam si l'on projetait d'utiliser la requête préparée plusieurs fois (donc si l'on exécute la même requete préparée plusieurs fois en utilisant des paramètres différents... ce qui n'est pas le cas ici). Pourquoi alors dans ce cas-ci avoir utilisé bindParam ? Merci pour votre aide :]
Ce n'est en effet pas spécialement utile par rapport à un bind avec bindValue car bindParam prend vraiment son vraiment tout son sens sur de l'exécution multiple, ce qui n'est pas le cas ici.
T'es sûr pour le closeCursor dans l'itération ?
EDIT : c'est vrai que c'est plus lié au résultat (bien qu'un INSERT n'en renvoie jamais chez MySQL), l'objet PDOStatement n'est pas touché (surtout les inputs binds dans ce contexte)
PDOStatement::closeCursor() libère la connexion au serveur, permettant ainsi à d'autres requêtes SQL d'être exécutées, mais laisse la requête dans un état lui permettant d'être de nouveau exécutée.
Il est possible de le mettre dans la boucle ou après.
Je préfère le mettre à l'intérieur, question de choix (possibilité d'exécuter d'autres requêtes en parallèle). Je n'ai pas remarqué de différence de performances/comportement entre les 2.
Pas de différences notables bien que bindParam s'avère légèrement plus rapide (on perçoit une différence dès 10000 itérations).
Après, la différence est si faible que c'est négligeable
bindValue VS bindParam
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli