Uncaught ValueError : mysqli_stmt::execute() : le paramètre n°1 ($params) doit être un tableau de listes
P粉502608799
P粉502608799 2024-02-03 17:09:57
0
1
406

J'essaie d'insérer plusieurs valeurs dans ma base de données avec une instruction préparée via ces deux requêtes, les deux requêtes échouent et renvoient l'une d'elles

Erreur non détectée : appel à la méthode non définie mysqli_stmt::bindValue()

Premier code ou

Uncaught ValueError : mysqli_stmt::execute() : paramètre n°1 ($params) Doit être un tableau de liste

Le deuxième. Quand je tape list 而不是 array ça dit

Erreur de grammaire

RemarqueTous les noms de variables, de tables et de colonnes sont des variantes simplifiées

J'ai vu de nombreuses questions similaires mais aucune ne répond à ma question. Pas même celui-ci « répété ».

Quelqu'un a-t-il une solution, ou une alternative ?

Voici les deux codes :

if(isset($_POST['ID'], $_POST['atr1'])){

        $sql = $db -> prepare("INSERT INTO some_table (ID, atr_place) VALUES (':fir', ':sec')");
        
        $sql -> bindValue(':fir', $_POST['ID'],);
        $sql -> bindValue(':sec', $_POST['atr1'],);
        $sql -> execute();
}
$sql = $db -> prepare("INSERT INTO some_table (ID, atr_place) VALUES (:fir, :sec)");
$sql -> execute(array(
    ':fir' => $_POST['ID'],
    ':sec' => $_POST['atr1'],
));

P粉502608799
P粉502608799

répondre à tous(1)
P粉373596828

Comme l'indique le message d'erreur, vous utilisez la bibliothèque mysqli a> pour communiquer avec votre base de données. Cependant, votre code semble être basé sur un exemple utilisant PDO , qui est une bibliothèque complètement différente. Bien que certaines fonctions portent des noms superficiellement similaires, elles ont en réalité des API et des exigences différentes.

Par exemple, certaines différences entre les API sont :

  • mysqli ne prend pas en charge les paramètres nommés, uniquement les espaces réservés anonymes spécifiés à l'aide de ?
  • PDO a les fonctions bindParam et bindValue, tandis que mysqli a bind_param
  • Avant PHP 8.1, mysqli n'acceptait pas les listes de paramètres fournies directement via la fonctionexecute().

Ce code doit être utilisé avec mysqli :

Si vous disposez de PHP 8.1 ou supérieur :

$sql = $db->prepare("INSERT INTO some_table (ID, atr_place) VALUES (?, ?)");
$sql->execute([$_POST['ID'], $_POST['atr1']]);

Sinon :

$sql = $db->prepare("INSERT INTO some_table (ID, atr_place) VALUES (?, ?)");
$sql->bind_param("ss", $_POST['ID'], $_POST['atr1']);
$sql->execute();
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!