J'essaie de copier des données d'une table vers une autre table mysql à partir de deux bases de données différentes
D'abord, j'obtiens toutes les données de la première table et les stocke dans la variable php
puis je boucle sur ce var pour insérer des données dans l'autre table
en utilisant cette requête
INSERT INTO `users` (`nUserId`, `vLoginName`, `vFirstName`, `vLastName`, `vEmail`)
VALUES ('$entity_id','$name','$firstname','$lastname','$email')
WHERE NOT EXISTS (SELECT `nUserId`,`vEmail`
FROM `users`
WHERE `nUserId`='$entity_id'
AND `vEmail` = '$email')
mais ça ne marche pas
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE NOT EXISTS (SELECT `nUserId`,`vEmail` FROM users '
Quelle est la syntaxe correcte pour que cela fonctionne?
Vous ne pouvez pas utiliser la clause WHERE
dans une instruction INSERT
. Cependant, vous pouvez utiliser INSERT IGNORE
si dans votre table de tarification, vous définissez nUserId ou vEmail comme clés uniques.
Plus d'informations sur la syntaxe INSERT: https://dev.mysql.com/doc/refman/5.6/en/insert.html
Je pense que le problème pourrait être des VALEURS et j'écrirais la déclaration comme suit:
INSERT INTO `users`
(`nUserId`, `vLoginName`, `vFirstName`, `vLastName`, `vEmail`)
SELECT
'$entity_id', '$name', '$firstname', '$lastname', '$email'
FROM dual
WHERE NOT EXISTS (SELECT *
FROM `users`
WHERE `nUserId`='$entity_id'
AND `vEmail` = '$email')
vous pouvez essayer quelque chose comme
delimiter $$
create procedure select_or_insert()
begin
IF EXISTS (select * from users where username = 'something') THEN
update users set id= 'some' where username = 'something';
ELSE
insert into users (username) values ('something');
END IF;
end $$
delimiter ;
Pas besoin de les stocker en php.
Crée un tableau exactement comme celui spécifié, Remarque: copie uniquement les colonnes
CREATE TABLE tbl_name LIKE db_name.tbl_name;
Si vous souhaitez des noms de colonnes spécifiques:
CREATE TABLE tbl_name SELECT column_name, column_name FROM db_name.tbl_name;
Ensuite, si vous souhaitez copier toutes les données,
INSERT INTO tbl_name SELECT * FROM db_name.tbl_name;
Ou des données de colonne spécifiques ne
INSERT INTO tbl_name SELECT column_name, column_name FROM db_name.tbl_name;
Si vous voulez des données spécifiques, ajoutez une clause WHERE.
$existeEmail=$mysqli->query("SELECT * FROM tb_users WHERE email = '$email'");
if(!$existeEmail=mysqli_fetch_array($existeEmail))/*si existe en la tabla tblreseteopass*/
{
}else{
$email = $existeEmail['email'];
// Direccionado hacia el registro con la Alerta 001
// ya existe una cuenta asociada a este email, si no recuerda la contraseña, solicite una nueva
header("Location: https://www.yourpage.com/b/?m=f_lg);
}