Récupérer les métadonnées du jeu de résultats de la base de données sans connaître l'instruction SQL
P粉506963842
P粉506963842 2023-09-04 14:18:17
0
1
442

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.

P粉506963842
P粉506963842

répondre à tous (1)
P粉674757114

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 interrogerinformation_schema.COLUMNStables 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é).

$stmt = $mysqli->prepare("SELECT what,ever,else FROM table"); $stmt->execute(); $metadata = $stmt->result_metadata(); $column_count = $mysqli->field_count(); $column_names = []; for ($colnum = 0; $colnum < $column_count; $colnum++) { $field = $metadata->fetch_field(); $column_names [] = $field->name; } $metadata->close();

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.

    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal
    À propos de nous Clause de non-responsabilité Sitemap
    Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!