J'utilise PHP et HTML et j'ai créé une base de données. Je suis connecté à la base de données. Je me demande s'il existe un moyen de récupérer des données d'une base de données en demandant à l'utilisateur de saisir l'intégralité de l'instruction SQL. Je suis vraiment intéressé par la façon d'obtenir les données sans dire $row['id']
Pour les besoins de l'argumentation, ils connaîtront les colonnes et les identifiants ainsi que tout ce qui concerne la base de données.
Tout ce que j'ai vu, c'est que vous devez savoir quelles colonnes sont interrogées avant de pouvoir accéder aux données.
Si vos utilisateurs doivent fournir des instructions SQL à utiliser, ils doivent connaître les noms des tables et des colonnes qu'ils souhaitent.
Vous pouvez interroger
information_schema.COLUMNS
tables pour trouver les noms de tables et de colonnes ainsi que les types de données.Alternativement, après avoir exécuté la requête, vous pouvez obtenir les métadonnées de la colonne. Pour PDO, utilisez$stmt->getColumMeta($columnNumber);. En utilisant mysqli, utilisez->result_metadata()comme ceci (non débogué).
Cela utilise->fetch_field()pour obtenir de nombreuses informations utiles sur chaque colonne de l'ensemble de résultats.
Mais demander aux utilisateurs de vous fournir des instructions SQL représente un gros risque de sécurité. Si vous faites confiance aux utilisateurs pour vous fournir des instructions SQL, vous devez également leur faire confiance pour ne pas corrompre ou corrompre vos données. Si votre système est ouvert à l’Internet mondial, vous perdrez des données. Parfois, les gens me demandent comment je sais cela.