Une instruction préparée ne peut exécuter qu'une seule requête MySQL. Vous pouvez préparer autant de déclarations que vous le souhaitez dans différentes variables :
$stmtUser = $sql->prepare("INSERT INTO user (id_user, username, pw, email) VALUES (?,?,?,?)");
$stmtProc = $sql->prepare("INSERT INTO process (id_user, idp) VALUES (?,?);");
Et puis les exécuter plus tard. Si vous voulez vous assurer qu'aucun n'est jamais exécuté à moins que les deux ne soient capables de fonctionner, alors vous devez examiner les transactions, comme l'a dit Thomas.
Aussi, un conseil général :"appel à la fonction membre sur un non-objet" est l'erreur standard que vous obtenez lorsque prepare()
échoue et donc $stmt
n'est pas réellement un objet d'instruction préparé. Cela signifie généralement que vous devez rechercher une erreur dans votre prepare()
déclaration plutôt que quoi que ce soit plus tard.