PHP MySQL Déclenche - Comment passer des variables à déclencher?
J'essaie de trouver comment envoyer des variables dans une requête à la détente, mais il va affecter un deuxième tableau. J'utilise cette fonction pour créer une table de journal, dans lequel tout ce qui est mis à jour ou inséré est enregistré dans le journal de table Par exemple
//Inserts into the table the username and password
$sql = "INSERT INTO table VALUES ($_POST['username'], $_SESSION['password']);
Déclencheur DDL États
DELIMITER $$
//Creates trigger to insert into table1 ( logs ) the userid and patientid ( which has to come from php )
USE `baemer_emr`$$
CREATE
DEFINER=`baemer_emr`@`localhost`
TRIGGER `table1`.`after_insert`
AFTER INSERT ON `baemer_emr`.`table1`
FOR EACH ROW
BEGIN
INSERT INTO table2 VALUES (NEW.idn, $_POST[userid], $_SESSION[patientid]);
END$$
Est-ce possible?
OriginalL'auteur Skynight | 2011-10-13
Vous devez vous connecter pour publier un commentaire.
Correctif SQL-injection
Noter que le stockage de mots de passe non cryptés dans une base de données est un péché cardinal.
Voir ci-dessous sur la façon de corriger l'erreur.
Les déclencheurs ne sont pas autoriser les paramètres
Vous pouvez uniquement accéder aux valeurs que vous venez d'insérer dans la table.
Le déclencheur d'Insertion a une table factice
new
pour cela.La Suppression de la triger a une table factice
old
pour voir les valeurs qui doivent être supprimées.Le déclencheur de mise à Jour a la fois
old
etnew
.Autre que vous ne peut pas accéder à toutes les données de l'extérieur.
La solution
Créer un blocage de la table.
Blackhole tables de ne pas les stocker quoi que ce soit, leur seule raison d'exister est pour des fins de réplication et de sorte que vous pouvez attacher des déclencheurs.
Prochaine insérer des données dans la blackhole table et de processus à l'aide d'un déclencheur.
Notes sur le déclencheur
Vous ne devriez jamais stocker les mots de passe en clair dans une base de données.
Toujours stocker comme un salée de hachage à l'aide de la plus sûre de la fonction de hachage (actuellement SHA2 avec une 512 longueur de la clé) , comme indiqué dans le déclencheur.
Vous pouvez tester pour voir si quelqu'un a le mot de passe correct en faisant:
Liens
http://dev.mysql.com/doc/refman/5.0/en/blackhole-storage-engine.html
http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html
Le stockage des mots de passe hachés dans MySQL
Comment l'injection de code SQL de la "Bobby" Tables XKCD œuvre comique?
Je déconseille MD5, il a été cassé pendant un certain temps et SHA2 est sûr, quand il s'agit de hachage de la lenteur est un bon chose.
L'insertion dans la blackhole va envoyer toutes les données directement à la détente et à l'intérieur de la gâchette, vous pouvez redistibute vos données. Ceci a l'avantage supplémentaire que tous vos inserts de se produire en une seule opération, car tout le code à l'intérieur d'un des déclencheurs de s'amalgament dans une transaction.
merci beaucoup pour l'information.
merci @Johan, par votre post, j'ai été en mesure de créer de déclenchement de mise à jour de cote de film dans mon film table basée sur la user_movie _rating table
OriginalL'auteur Johan
Je ne pense pas qu'il est.
Vous pouvez ajouter
userid
etpatientid
colonnes à laVALUES
table, les remplir au cours de l'insert d'origine et de référence à ceux qui sont dans le déclenchement lors de l'insertion dans votre journal de table.et puis la le déclencheur:
Juste assez. Je ne connaissais pas l'existence de blackholes. Je le fais maintenant. Conseil utile.
OriginalL'auteur Tom Mac