J'ai vu quelques questions au cours des derniers jours qui ont utilisé mysqli
mais où les réponses semblent ne pas avoir reconnu la différence entre $stmt->execute()
et $db->query()
. Si je comprends bien, il y a deux modèles différents pour accéder aux résultats dans mysqli
Mixage des fonctions d'accès aux données mysqli de PHP?
Celui-ci utilise SQL brute et exige que le programmeur pour échapper à l'entrée pour empêcher les attaques par injection SQL, mais permet au programmeur de récupérer un tableau associatif (ou un simple tableau) contenant column => value
applications:
$result_set = $db->query("SAFE SQL QUERY HERE");
while ($row = $result_set->fetch_assoc()) {
# do something with $row['fieldname'];
}
Alternativement , vous pouvez le faire, ce qui permet bien de liaison des paramètres et des résultats, mais ne peut pas (autant que je sache) vous donner toute sorte de résultat simple tableau:
$stmt = $db-prepare("SQL QUERY WITH ? PLACEHOLDERS");
$stmt->bind_param("s", $input_variable);
$stmt->execute();
$stmt->bind_results($output_col1, $output_col2);
while ($stmt->fetch()) {
# do something with $output_col1 and $output_col2
}
Ma question est - est-il possible avec mysqli
pour obtenir la sortie de tableau simple montrée dans le premier modèle, mais tout en utilisant toujours en toute sécurité les paramètres d'entrée liés selon le deuxième modèle?
Je ne trouve pas de toute façon de le faire (autre que d'utiliser PDO
à la place!).
Olafur - J'ai révulsés votre changement d'orthographe. "reconnu" est l'orthographe anglaise standard. – Alnitak