php - error with a foreign key constraint fails -
i'm creating form insert data logement table , lit table , table espace. i'm trying insert data in tables connected in image enter image description here
but i'm getting error :
warning: mysql_insert_id() expects parameter 1 resource, object given in f:\-- software\web-server\esyphp\ep0002\data\localweb\school\buckup\bu-projet\0008\ajoutez.php on line 88 error: not able execute insert logement(titre, adresselogement, prix, nombreperson, idtypelogement) values ('hgfrte','125669 hgfer','1236','33',''). cannot add or update child row: foreign key constraint fails (`yandexd`.`logement`, constraint `fk_logement_idtypelogement` foreign key (`idtypelogement`) references `typedelogement` (`idtypelogement`)) error: not able execute insert lit(idlit, typedelit) values ('','kanape, canape'). cannot add or update child row: foreign key constraint fails (`yandexd`.`lit`, constraint `fk_lit_idlogement` foreign key (`idlogement`) references `logement` (`idlogement`))
my php code
if(isset($_post['submit'])){ /* attempt mysql server connection. assuming running mysql server default setting (user 'root' no password) */ $link = @mysqli_connect("localhost", "root", "", "yandexd"); // check connection if($link === false){ die("error: not connect. " . mysqli_connect_error()); } switch ($_post['logm-type']) { case "maison": $_post['logm-type'] = 1; break; case "appartement": $_post['logm-type'] = 2; break; case "chambre_privée": $_post['logm-type'] = 3; break; case "chambre_partagée": $_post['logm-type'] = 4; break; } $sql = "insert logement(titre, adresselogement, prix, nombreperson, idtypelogement) values ('".$_post['logm-titre']."','".$_post['logm-adresse']."','".$_post['logm-prix']."','".$_post['logm-personne']."','".$_post['logm-type']."')"; $thelogm_id = mysql_insert_id( $link ); $sql1 = "insert espace(typedespace, idlogement) values ('".$_post['logm-espace']."','".$thelogm_id."')"; $sql2 = "insert lit(typedelit, idlogement) values ('".$_post['logm-typelit']."','".$thelogm_id."')"; if(mysqli_query($link, $sql)){ echo "le logement est ajouté."; } else{ echo "error: not able execute $sql. " . mysqli_error($link); } if(mysqli_query($link, $sql1)){ echo "le logement est ajouté."; } else{ echo "error: not able execute $sql1. " . mysqli_error($link); } if(mysqli_query($link, $sql2)){ echo "le logement est ajouté."; } else{ echo "error: not able execute $sql2. " . mysqli_error($link); } // close connection mysqli_close($link); } else {
i tried solution found on stackoverflow, can't solve problem
if client sends string in logm-type
doesn't match 1 of 4 you've mentioned in switch
statement, code pass string gave if id, in case error message you're seeing best case scenario.
your code using post values in sql queries directly, not idea - if client (accidentally or deliberately) includes apostrophe?
Comments
Post a Comment