À l'aide de caractères génériques dans une instruction préparée - MySQLi
Je suis en train de lancer la requête suivante, et je vais avoir des ennuis avec le générique.
function getStudents() {
global $db;
$users = array();
$query = $db->prepare("SELECT id, adminRights FROM users WHERE classes LIKE ? && adminRights='student'");
$query->bind_param('s', '%' . $this->className . '%');
$query->execute();
$query->bind_result($uid, $adminRights);
while ($query->fetch()) {
if (isset($adminRights[$this->className]) && $adminRights[$this->className] == 'student')
$users[] = $uid;
}
$query->close();
return $users;
}
J'obtiens un message d'erreur qui indique: Impossible de passer le paramètre 2 par référence. La raison pour laquelle je besoin pour utiliser le joker, c'est parce que les données de la colonne contient sérialisé tableaux. Je suppose que, s'il y a un moyen plus facile de gérer cela, que pouvais-je faire?
Merci d'avance!
- double possible de SQL comme la déclaration de problèmes
Vous devez vous connecter pour publier un commentaire.
Vous avez à passer des paramètres à
bind_param()
par référence, ce qui signifie que vous avez passer un seule variable (pas une chaîne concaténée). Il n'y a aucune raison que vous ne pouvez pas construire une telle variable spécifiquement pour passer, si:Une autre façon de le faire est:
C'est pratique dans le cas où vous avez un résultat dynamique lier et que vous souhaitez uniquement modifier la requête SQL...
Le paramètre #2 doit être une référence, pas une valeur. Essayez
C'est la même raison qui se passe en C++. Lorsque vous passez une valeur à une fonction qui attend l'argument d'être une référence, vous avez besoin d'une variable ( et non temporaire ). Donc tout d'abord créer une variable et ensuite de le passer.
Les questions /réponses ne fonctionne pas pour moi donc, c'est ce que j'ai utilisé à la place:
Et il travaille tout le temps.
et pour couronner le tout, j'ai juste essayé la forme la plus simple et cela a fonctionné
J'espère que cette aide