La méthode $wpdb->insert() permet d'insérer un enregistrement dans une table sous WordPress.
▼Publicité Le texte se poursuit plus bas
Lorsqu'un seul enregistrement doit être inséré, cet extrait de code fait bien l'affaire.
$reussite = $wpdb->insert(
$table_matable,
[
'champ1' => 'une chaîne',
'champ2' => 9,
],
[
'%s',
'%d',
]
);
if ( ! $reussite ) {
// réagir en cas de problème
monprefixe_log_debug( $wpdb->last_error );
// ...
}
Cependant, lorsqu'on doit insérer une série d'enregistrements dans une table, le code peut devenir très long.
L'algorithme suivant permettra de coder plus facilement l'enregistrement de plusieurs enregistrements.
$donnees = [
[ 'chaîne 1', 10, '2021-09-28' ], // données du premier enregistrement
[ 'chaîne 2', 20, '2021-08-03' ], // données du deuxième enregistrement
// ...
];
foreach( $donnees as $donnee ) {
// à chaque boucle, va chercher les informations pour un enregistrement dans le tableau de données
$reussite = $wpdb->insert(
$table_matable,
[
'champ1' => $donnee[0],
'champ2' => $donnee[1],
'champ3' => $donnee[2],
],
[
'%s',
'%d',
'%s',
]
);
if ( ! $reussite ) {
// réagir en cas de problème
monprefixe_log_debug( $wpdb->last_error );
// ...
}
}
Dans le cas où il faut insérer des données dans deux tables liées, on prendra soin de retenir les identifiants de la table parent afin de les utiliser correctement dans la table enfant.
$id = []; // Pour stocker les identifiants à utiliser comme clés étrangères dans la table enfant.
$erreur = false;
$donneesTableParent = [
[ 'chaîne 1', 10, '2021-09-28' ], // données du premier enregistrement
[ 'chaîne 2', 20, '2021-08-03' ], // données du deuxième enregistrement
// ...
];
// Le premier champ est la clé étrangère.
// On y inscrit 1 si l'enregistrement est lié au premier enregistrement dans la table parent, 2 pour le 2e, etc.
$donneesTableEnfant = [
[ 1, 'description 1' ],
[ 1, 'description 2' ],
[ 2, 'description 3' ],
[ 1, 'description 4' ],
[ 2, 'description 5' ],
[ 2, 'description 6' ],
[ 1, 'description 7' ],
// ...
];
foreach( $donneesTableParent as $donnee ) {
// à chaque boucle, va chercher les informations pour un enregistrement dans le tableau de données
$reussite = $wpdb->insert(
$table_matable,
[
'champ1' => $donnee[0],
'champ2' => $donnee[1],
'champ3' => $donnee[2],
],
[
'%s',
'%d',
'%s',
]
);
$id[] = $wpdb->insert_id; // retient l'identifiant
if ( ! $reussite ) {
// réagir en cas de problème
monprefixe_log_debug( $wpdb->last_error );
$erreur = true;
// ...
}
}
// Inutile de poursuivre si les enregistrements de la table parent n'ont pas tous fonctionné.
if ( ! $erreur ) {
foreach( $donneesTableEnfant as $donnee ) {
$reussite = $wpdb->insert(
$table_matable,
[
'champ1' => $id[$donnee[0] - 1], // Si on a mis 1, on veut l'élément 0 du tableau $[id].
'champ2' => $donnee[1],
],
[
'%d',
'%s',
]
);
if ( ! $reussite ) {
// réagir en cas de problème
monprefixe_log_debug( $wpdb->last_error );
// ...
}
}
}
Site fièrement hébergé chez A2 Hosting.