Bonjour à tous
J'ai une table 'Users' dans une base de donnée mySQL avec
une colonne 'userID' qui est déclarée comme index et une colonne 'userName' qui contient un nom de personne (et d'autres colonnes bien entendu).
Dans un tableau PHP je dispose d'une liste de paires [userID, userName] sous la forme
Je cherche à mettre à jour ma table ce qui me conduit à quelque chose comme
ou bien créer un tableau de valeurs et le passer dans execute(), mais ça ne change pas grand chose
Cela me semble très lourd, en particulier le fait de devoir exécuter autant de requêtes qu'il y a d'entrées dans mon tableau.
Auriez vous une idée pour simplifier ce code?
Merci de vos conseils.
Modifié par PapyJP (04 Oct 2021 - 12:39)
J'ai une table 'Users' dans une base de donnée mySQL avec
une colonne 'userID' qui est déclarée comme index et une colonne 'userName' qui contient un nom de personne (et d'autres colonnes bien entendu).
Dans un tableau PHP je dispose d'une liste de paires [userID, userName] sous la forme
$data = ['user1' => 'name1', 'user2' => 'name2', ...];
Je cherche à mettre à jour ma table ce qui me conduit à quelque chose comme
$sql = <<<SQL
INSERT INTO Users (userID, userName) VALUES (:user, :name)
ON DUPLICATE KEY UPDATE (userID, userName) VALUES (:user2, :name2) ;
SQL;
$stmt = $database -> pdo -> prepare($sql)
foreach($data as $user => $name) {
$stmt -> bindValue(':user', $user);
$stmt -> bindValue(':user2', $user);
$stmt -> bindValue(':name', $name);
$stmt -> bindValue(':name2', $name);
$stmt -> execute();
}
ou bien créer un tableau de valeurs et le passer dans execute(), mais ça ne change pas grand chose
Cela me semble très lourd, en particulier le fait de devoir exécuter autant de requêtes qu'il y a d'entrées dans mon tableau.
Auriez vous une idée pour simplifier ce code?
Merci de vos conseils.
Modifié par PapyJP (04 Oct 2021 - 12:39)